问题
请计算N个数的阶乘之和
考虑问题
先把问题分为两个部分
1.N的阶乘
那么N的阶乘应该是从1乘到N
也就是说for循环
int sum=1;
for (int i = 1; i <= n; ++i)
{
sum2 = sum2 * i;
}
2.N个阶乘相加
那么N个数相加也应写一个for循环
for (int i = 1; i <= n; ++i)
{
sum1 = sum2 +i ;
}
3.如何嵌套
先来思考结构:
必然是要有两个for,一个相加,一个求阶乘
那么先来列举几个
当n=2:
那么就是1!+2!,直接写代码就该是
//第一次是1!
int sum=1;
for (int i = 1; i <= 1; ++i)
{
sum2 = sum2 * i;
}
//第二次是2!
int sum=1;
for (int i = 1; i <= 2; ++i)
{
sum2 = sum2 * i;
}
然后将二者的sum2相加。
然后将这个分开的代码加起来就好了
但要注意
这里的sum2每次应该重新归1,因为算的是内层的阶乘,而每次sum1都应该把sum2的值加上,也就是
for (int i = 1; i <= n; ++i)
{
sum2=1
for(){};
sum1 = sum2 +i ;
}
代码
#include<stdio.h>
int main()
{
long long a,sum1=0,sum2=1;
scanf("%lld", &a);
for (int i = 1; i <= a; ++i)
{
sum2 = 1;
for (int j = 1; j <= i; ++j)
{
sum2 = sum2 * j;
}
sum1 = sum1 + sum2;
}
printf("%lld", sum1);
return 0;
}