当前位置:   article > 正文

【练习】计算1!+2!+...+n!之和_已知求阶乘的函数如下,利用这个函数,编程计算并输出1!+2!+...+n!的值。 其中n由用

已知求阶乘的函数如下,利用这个函数,编程计算并输出1!+2!+...+n!的值。 其中n由用

方法1用2层循环控制,外部决定1到10(阶乘数的变化),内部负责计算阶乘,最后把每次阶乘相加

注意:

(1)外部循环每进来一次(i变一次)将sum重置1,否则sum是上一个数字的阶乘

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. int i=0,j=0,sum=1,n=0,N=0;
  5. scanf("%d",&n);
  6. for(i=1;i<=n;i++)
  7. {
  8. sum=1; //i每变一次,将sum重置1,不然sum是上一次算下来的阶乘
  9. for(j=1;j<=i;j++)
  10. {
  11. sum=sum*j; //1-n之间垒乘
  12. }
  13. N=N+sum;
  14. }
  15. printf("%d",N);
  16. return 0;
  17. }

方法2:这种方法相对于上一种比较优化,就是比如说你要计算5!不需要从一乘到5,直接利用前面得到的结果4!直接乘以5即可,程序简单很多

注意:

(1)直接输出ret=ret*i的话,是1到n的累乘(n的阶乘),如果ret=ret*i;sum=sum+ret;放在循环里执行,
最后输出sum的话,是计算1!+2!+。。。n!之和
(2)这种算法相当于比如说计算5!,不要从1乘到5,直接用4!乘以5,其他的类似
int main ()
{
	int i=0,ret=1,n=0,sum=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		ret=ret*i;  //1开始累乘
		sum=sum+ret;  //1!,2!...n!累加
	}
	printf("%d",sum);
	return 0;
}


 



本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/850214
推荐阅读
相关标签
  

闽ICP备14008679号