赞
踩
方法1:用2层循环控制,外部决定1到10(阶乘数的变化),内部负责计算阶乘,最后把每次阶乘相加
注意:
(1)外部循环每进来一次(i变一次)将sum重置1,否则sum是上一个数字的阶乘
- #include <stdio.h>
- int main ()
- {
- int i=0,j=0,sum=1,n=0,N=0;
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- {
- sum=1; //i每变一次,将sum重置1,不然sum是上一次算下来的阶乘
- for(j=1;j<=i;j++)
- {
- sum=sum*j; //1-n之间垒乘
- }
- N=N+sum;
- }
- printf("%d",N);
- return 0;
- }

方法2:这种方法相对于上一种比较优化,就是比如说你要计算5!不需要从一乘到5,直接利用前面得到的结果4!直接乘以5即可,程序简单很多
注意:
(1)直接输出ret=ret*i的话,是1到n的累乘(n的阶乘),如果ret=ret*i;sum=sum+ret;放在循环里执行,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;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。