c语言用函数求前n个数的阶乘和(即求1!+2!+3!+…+)

c语言用函数求前n个数的阶乘和(即求1!+2!+3!+…+)

#include <stdio.h>

long jiecheng(int num)
{
    if(num==1)
        return 1;
    else
        return num*jiecheng(num-1);
}
int main(void)
{
    long i,sum=0;
    int n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum+=jiecheng(i);
    }
    printf("sum is :%d\n",sum);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-28
可以用递归实现,一下有我的公式推导和程序
int jiechengsum(int n)
{
//f(n)=1!+2!+...+...+(n-1)!+n!=f(n-1)+n!=f(n-1)+n!=
//f(n-1)+n(n-1)!=f(n-1)+n(f(n-1)-f(n-2))=(n+1)f(n-1)-nf(n-2)
if(n==1)
{
return 1;
}
else if(n==2)
{
return 3;
}
else
{
return (n+1)*jiechengsum(n-1) - n*jiechengsum(n-2);
}
}
相似回答