题目描述

求1! + 2! + ……n!

输入

输入一个整数n,你可以假定n不大于10。

输出

输出一个整数,即阶乘累加的结果,单独占一行。

样例输入

复制

4

样例输出

复制

33

解题思路:

观察可以发现:

1.第一项除外,因为后一项都是前一项的阶乘再乘以项数得到的,所以求后一项可以用前一项乘以项数得到,这里可以用一个for循环实现。

for(j=1;j<=i;j++)
{a=a*j; }

2.数列求和从第一项开始一直到第n项,再用一个for循环计算求和,即把每一项的结果都连续相加起来。


#include <stdio.h>
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;

}