题目描述
求1! + 2! + ……n!
输入
输入一个整数n,你可以假定n不大于10。
输出
输出一个整数,即阶乘累加的结果,单独占一行。
样例输入
复制
4
样例输出
复制
33
解题思路:
观察可以发现:
1.第一项除外,因为后一项都是前一项的阶乘再乘以项数得到的,所以求后一项可以用前一项乘以项数得到,这里可以用一个for循环实现。
for(j=1;j<=i;j++)
{a=a*j; }
2.数列求和从第一项开始一直到第n项,再用一个for循环计算求和,即把每一项的结果都连续相加起来。
int main()
{
int n,a,sum=0,i,j; //n代表一直到第n项,a代表每一项的阶乘结果
scanf("%d",&n);
for(i=1;i<=n;i++) //第一层循环是求和用的
{
a=1; //阶乘第一项是1,所以开始给a赋值为1
for(j=1;j<=i;j++) //第二层循环是用来求每一项的阶乘
{
a=a*j; //将累乘的结果赋值给a
}
sum=sum+a; //将每一次累乘的结果加起来
}
printf("%d",sum);
return 0;
}