代码实现:求前N个数字的阶乘

简介: 代码实现:求前N个数字的阶乘

对于上述代码,主要在于求阶乘!但是对于阶乘使什么?怎样去求?这个就需要我们数学知识了!


下面使笔者搜索百度百科里面的内容:


一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。  原文链接为:阶乘_百度百科  对于不知道阶乘是什么的读者可以去看一下,文章仅供参考!


对于求:1!+2!+3!+4!+5!+…………+N!我们可以进行分步骤来求:


因此我们可以先求:N!(N的阶乘)


因此,我们只需要一个for循环就能将N的阶乘求出来!


笔者的简单代码为:


#include <stdio.h>
int main()
{
  int n = 0;
  int ret = 1;
  scanf_s("%d", &n);
  int i = 0;
  for (i = 1; i <= n; i++)
  {
  ret = ret * i;
  }
  printf("%d\n", ret);
  return 0;
}


上述代码,for循环,将 i 依次与ret进行乘法运算,如然后在将得出的值,重新赋值给ret!


从而得出正确结果!


0a2653c851af460fa595bd959398a8f1.png


既然,我们已经简单的知道如何去求N的阶乘了,那么对于1!+2!+3!+4!+5!+…………+N!


也就应该有着自己的思路去正确书写代码了!


下面是笔者的简单代码仅供读者参考!


#include <stdio.h>
int main()
{
  int n = 0;
  int i = 0;
  int ret = 0;
  int sum = 0;
  for (n = 1; n <= 10; n++)        //求1到n=10的阶乘
  {
  ret = 1;  //对ret进行初始化!
  for (i = 1; i <= n; i++)
  {
    ret = ret * i;
  }
  sum = sum + ret;
  }
  printf("%d\n", ret);
  return 0;
}


在上述代码中,读者需要注意的是,每次循环执行时候,都需要将ret进行初始化,要不然ret是上一次循环后的结果,将会很大,从而出现程序错误!对于该段代码,n的数值也不能太过于大,要不然程序会崩溃,解决方法为:将int类型改为:long long 类型,但是也不建议出现太过于膨大的数值!


对于上述代码:用了两层for循环,外层是将n的值赋以1到10,从而进入内层循环,内层循环主要是对从1到n的阶乘进行乘法运算!然后每一次内层循环后,都将得出的结果赋值给sum,在执行下一次的循环,ret重置!


因此输出最后的结果:


6de278e6d6694ce5bb08e7e842b7e74b.png


到此为止,笔者的内容已经详细讲解出来,对于读者的疑惑,请及时联系笔者进行更改!


相关文章
|
9月前
|
人工智能 BI C语言
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
85 1
|
4月前
|
C语言
输出指定数字前的斐波那契数列
【10月更文挑战第19天】输出指定数字前的斐波那契数列。
37 3
|
8月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
57 0
|
8月前
|
Serverless C语言
C语言----递归函数,计算一个非负整数的数字之和
C语言----递归函数,计算一个非负整数的数字之和
|
9月前
|
算法 搜索推荐 程序员
第五十一练 请以递归方式实现计算两个整数的最大公约数的函数
第五十一练 请以递归方式实现计算两个整数的最大公约数的函数
50 0
|
9月前
|
存储 程序员 C语言
利用循环结构实现数字的阶乘计算
利用循环结构实现数字的阶乘计算
101 0
|
C语言
C语言一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出
C语言一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出
182 0
|
算法 程序员 C语言
C语言基础(有关三个数比较大小、冒泡排序、最大公约数、和有关某个数x的绝对值的n次方除于n的阶乘问题的函数求解法;和阶乘函数递归方法;和数组作函数参数的
C语言基础(有关三个数比较大小、冒泡排序、最大公约数、和有关某个数x的绝对值的n次方除于n的阶乘问题的函数求解法;和阶乘函数递归方法;和数组作函数参数的
|
算法 C语言
C语言基础(有关三角形面积,阶乘算法,sqrt,pow函数,海伦公式,gets,getchar,scanf的区别,字符转换,增长率计算,的分支和循环的结构程序设计)
C语言基础(有关三角形面积,阶乘算法,sqrt,pow函数,海伦公式,gets,getchar,scanf的区别,字符转换,增长率计算,的分支和循环的结构程序设计)