五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

这篇具有很好参考价值的文章主要介绍了五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

题目分析:

       首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!
具体的操作: 利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。
1.    定义变量 sum,并赋初值 1;
2.    i 自加 1;
3.    直到 i >n 循环结束。

方法一:使用For循环----主函数内写出所有代码

代码示例如下:

#include <stdio.h>
int main()
{
    int i,n;
    double sum=1;  //sum定义为双精度浮点型
    scanf("%d",&n);//高版本编译器中使用scanf_s
    for(i=1;i<=n;i++)
        {
          sum=sum*i;  //for循环体--sum乘以i的值赋值给sum
        }
    printf("%d!=%lf",n,sum); //输出结果为浮点型数据,默认保留6位小数
    printf("\n");
    return 0;
}

代码运行结果如下:

五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

 方法二:使用while循环----主函数内写出所有代码

                 思路:while表达式中判定循环停止的标准是i<=n,循环体只需要添加i自增就可。

代码示例如下:

#include <stdio.h>
#include <math.h>
 
int main()
{
    int n,i=1,j=1;
    scanf("%d",&n);
    if(n>1&&n<=10)        //此次代码增加限制条件,现在最高运算整数10的阶乘
    {
        while(i<=n)
        {
            j=j*i;
            i++;
        }
        printf("%d\n",j);
    }
    return 0;
}

代码运算结果如下:

五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

 方法三:主函数外 使用函数递归方法实现----函数调用自身的思想 代码的利用率更高

               1.  函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数

               2.  递归函数不能定义为内联函数。

#include <stdio.h>

int Fact(int n) //递归函数 
{
    int res=n;
    if(n>1)
        res=res*Fact(n-1);
    return res;
}
                                           
int main() //主函数 
{
    int n,cnt;                 
    scanf("%d",&n);
    cnt=Fact(n);
    printf("%d\n",cnt);
    return 0;
}
#include<stdio.h>
int fun(int n)
{
  if(n==1||n==0) return 1;//如果参数是0或者1返回1
  return n*fun(n-1);//否则返回n和下次递归的积
}

int main()
{
  int n;
  scanf("%d",&n);
  printf("%d\n",fun(n));
  return 0;
}

代码运行结果为:

五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

 

方法四:主函数外写一个子函数 在主函数内使用直接进行调用该子函数的方法实现

更加直接美观、可读性强

代码示例如下:

#include<stdio.h>
void factorial()
{
    int number;
    int factorial = 1;
    scanf_s("%d", &number);
    for(int i=1; i<=number; i++) 
    {
        factorial = i*factorial;//确保即便当number=0的时候,结果也为1
    }
    printf("%d ", factorial);
}
int main()
{
    factorial();//<==>直接把主要代码这部分给另拿出来,然后在主函数中进行调用
}

运行结果如下:

五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

 

方法五:利用静态变量实现阶乘

代码示例如下:

#include<stdio.h>

 int main()
{
    int n, m = 1, pro;
    long fact(int);//实现阶乘的函数
    printf("Input n:");
    scanf_s("%d", &n);
    for (; m <= n; m++)
        pro = fact(m);
    printf("%d!=%ld\n", n, pro);
}

long fact(int n)
{
    static long pro = 1;//pro即product---乘积
    pro = pro * n;
    return(pro);
}

代码运行结果如下:

五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法

 

 

编著注:以上对本小题的代码编写的多种方法,欢迎大家收藏借鉴并转发;

               以上代码仅供参考,如有问题欢迎大家在留言区批评指正;

               版权所有,翻印必究,如有雷同纯属巧合,转载请注明出处。

               By CRH380AJ2808 2022.04.20
————————————————
版权声明:本文为CSDN博主「CRH380AJ2808」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:文章来源地址https://www.toymoban.com/news/detail-402527.html

到了这里,关于五种C程序计算阶乘方法 c语言实现1到n的阶乘1*2*3*.....*n的累乘计算,使用不同方法实现,五种计算阶乘的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL根据出生日期计算年龄的五种方法比较

    方法一 缺陷,当日期为未来日期时结果为0,而不是负数; 这里用了5个函数和两个运算符。 方法二 解决了方法一为负数的问题,但看起来更复杂;这里使用了6个函数和3个运算符。 改良后方法一和方法二 改良后的方法一,少了一个函数和一个运算符,当日期为未来日期时计

    2024年02月11日
    浏览(17)
  • C语言写九九乘法表(五种方法)

    当我们学习编程语言时,通常需要掌握一些基本的语法和功能。在C语言中,输出九九乘法表是一个很好的练习,因为它既简单又有趣。本文将介绍如何用C语言编写代码来输出九九乘法表。 在开始之前,请确保您已经安装了C语言的开发环境,比如VS2019。 首先,我们需要明确

    2024年02月08日
    浏览(17)
  • C语言 五种方法输出100以内的素数(质数) 源码

    目录   写在前面: 输出前20万个素数,对比简单遍历和欧拉筛选的运行时间。 简单遍历: 欧拉筛选: 一、简单遍历 二、遍历至该数的平方根       三、用x/i来代替sqrt(x) 四、朴素筛法 五、埃式筛法 六、欧拉筛法           简单遍历: 3.243秒 欧拉筛选: 0.353秒     

    2024年02月05日
    浏览(15)
  • 小程序页面之间数据传递的五种方法

    使用 wx.navigateTo() 时,在 url 中拼接,这种方法适用于数据量少的情况 跳转前A页面在 url 中拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔; 跳转到B页面在生命周期函数 onLoad 中接收 如果需要传递对象或数组,需先将对象或数据转为JSON字符

    2024年02月10日
    浏览(20)
  • 再说不会用python计算地球表面多边形面积,可不能了!(记录五种可行方法)

    由于地理投影导致导致每个像元实际地面面积不同,越靠近北极实际面积越小,越靠近赤道实际面积越大, 如果不进行面积加权就简单平均,会导致温度较实际温度偏低。 直接使用卫星地图的计算面积功能就会遇到这样的问题,多数卫星地图的计算面积功能是将地图假设为

    2024年02月01日
    浏览(17)
  • 计算机缺失msvcr100.dll如何修复?分享五种实测靠谱的方法

    在计算机系统的日常运行与维护过程中,我们可能会遇到一种特定的故障场景,即系统中关键性动态链接库文件msvcr100.dll的丢失。msvcr100.dll是Microsoft Visual C++ Redistributable Package的一部分,对于许多基于Windows的应用程序来说,该文件至关重要,它的缺失可能导致部分软件无法正

    2024年02月02日
    浏览(25)
  • 微信小程序学习之五种页面跳转方法.

    这是最常见的一种跳转方式,相当于html里的a标签.但需要注意的是 该方法不能跳转tabbar页面. 格式为: 通过构造js函数,在函数中调用该接口可实现页面跳转的效果.但该接口同样不能跳转tabbar页面.跳转后左上角有返回小箭头,点击可返回原本页面. 格式为:  关闭当前页面,跳转到

    2024年02月09日
    浏览(17)
  • C语言题目:阶乘数列求和(函数)

    输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double。       x - x2/2! + x3/3! + ... + (-1)n-1xn/n! ×输出保留4位小数。 x n 数列和 定义 fact 函数 : fact(int n) 函数用于计算一个整数

    2024年04月13日
    浏览(17)
  • 微信小程序事件点击跳转页面的五种方法

    第一种:标签 这是最常见的一种跳转方式,相当于html里的a标签 第二种:wx.navigateTo({})方法 1.前端wxml 2.js应用 第三种:wx.redirectTo({}) 功能描述: 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 类似于页面跳转时 重定向页面,类似于html中的 window.open(‘…

    2024年02月16日
    浏览(17)
  • C语言解决n的阶乘问题

    目录 一.输入n,输出n的阶乘 二.输入n,输出1!+2!+3!+~~~~+n! 法一(两个for循环): 法二(用一个for循环): n的阶乘就是1乘以2乘以3········一直乘到n,这样就很明显,我们可以用循环来做,那我们就以for循环举个例子:   我们运行来看看:  4!=4*3*2*1=24,所以结果正确,

    2024年02月03日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包