请按给定的函数原型编程实现计算1!+2!+…+n!
函数原型:long Fact(int n)
要求:
在主函数中输入n的值;
调用函数Fact计算1!+2!+…+n!;
在主函数中输出结果。
****要求输入提示信息为:“Input n(n>0):”
****输出格式要求为:“sum = %d\n”
之前解决这种阶乘求和问题,我一直是用的分而治之的方法,屡试不爽
思路:一个求和函数专门用来求和,另一个阶乘函数专门用来算阶乘,求和函数对阶乘函数进行调用,简单明了
而如今要求我在同一个函数中做到阶乘求和,很明显要套用两个循环才能做到。苦于一直没有什么清晰的思路,才想起来 C Primer Pluse 中有提到磨刀不误砍柴工,写代码之前要先画流程图。果然,在稿纸上很快整理出了框架
于是代码就可以很快地写出来了
#include <stdio.h>
long Fact(int n);
int main(void)
{
int n;
printf("Input n(n>0):");
scanf("%d",&n);
printf("sum = %ld\n",Fact(n));
}
long Fact(int n)
{
int i, sum = 0, fact = 1;
for(;n>1;n--)
{
for(i=n;i>1;i--)
{
fact *= i;
}
sum += fact;
fact = 1;//算完一个数的阶乘后要把fact重置为1才能进行下一个数的阶乘
}
return sum+1;//不要忘了1的阶乘
}