题目
输入一个n,求出s。其中S=n!+(n-1)!+.......+2!+1!。
代码
//阶乘求和
#include <stdio.h>
int main()
{
int n,i,j,x=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
x=1;
for(j=1;j<=i;j++)
x*=j;
sum+=x;
}
printf("%d",sum);
return 0;
}
分析
需要双重循环,第一层在外面计算(求和),将从1到n的各个数计算出来的阶乘相加。第二层在第一层循环内计算各个数的阶乘。
第一层:
for(i=1;i<=n;i++)
{
sum+=x;
}
第二层:
for(j=1;j<=i;j++)
x*=j;
第二层循环的循环条件为 j<i ,当第一层 i=n 时,第二层计算阶乘时,j 只从 1 乘到 n 。
(循环条件的设置是一个值得注意思考的地方。)
注意
for(i=1;i<=n;i++)
{
x=1;
for(j=1;j<=i;j++)
...
}
第一层循环中,第二层循环外,让 x=1 ,这个是重置x的值,否则x会用上一次循环的值计算,从而出现错误。