请按给定的函数原型编程实现计算1!+2!+...+n!

请按给定的函数原型编程实现计算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的阶乘
}

猜你喜欢

转载自blog.csdn.net/weixin_43888800/article/details/112060210