对于这题,大多数人都像图(1)一样直接来。但分释一下,1!= 1、2!= 1*2、3!=1*2*3,发现可以简化前面重复的步骤,3!= 2!* 3这样,在求更大的阶乘之和时可以提高效率。
#include <stdio.h>//图(1)
int main()
{
int n = 0;
int i = 0;
int c = 0;//存放乘积
int sum = 0;//和
for (n = 1; n <= 3; n++)
{
for (i = 1,c = 1; i <= n; i++)
{
c = c * i;
}
sum += c;
}
printf("%d", sum);
return 0;
}
#include <stdio.h>//图(2)
int main()
{
int n = 0;
int i = 0;
int c = 0;//
int sum = 0;//和
n = 3;
for (i = 1, c = 1; i <= n; i++)
{
c = c * i;
sum += c;
}
printf("%d", sum);
return 0;
}
使用图2的方法,当求1!+……+n!的运算效率高
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int c = 0;//
int sum = 0;//和
scanf("%d", &n);//对任意阶乘之和
for (i = 1, c = 1; i <= n; i++)
{
c = c * i;
sum += c;
}
printf("%d", sum);
return 0;
}