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;
}
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);
}
}
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);
}
}