如题所述
下面是测试的结果:
测试结果
思路:先通过程序获得阶乘的值,之后再将阶乘相加,求阶乘时和相加时都用递归的写法
首先是求阶乘:
int factorial(int index){
int sum = 0;
if (index == 1){
sum = 1;
}else{
sum = index * factorial(index-1);
}
return sum;
}
之后再求和:
int add_recursion(int maxnum){
int sum = 0;
if (maxnum == 1){
sum = factorial(maxnum);
}else{
sum = factorial(maxnum) + add_recursion(maxnum-1);
}
return sum;
}
下面是完整的代码:
完整代码
#include <stdio.h>
int n,t=1,s=0;
void sum_fac(int k)
{if(k<=n)
{s+=t;
t*=k;
sum_fac(k+1);
}
}
int main ()
{ scanf("%d",&n);
sum_fac(1);
printf("%d\n",s);
return 0;
}
c语言代码如下:
int fun(int n){
int i,sum=1;
if(n==1)
return 1;
else
{
for (i=1;i<=n;i++)
sum=sum*i;
}
return sum+fun(n-1);
}
int main(){
printf("%ld",fun(10));
return 0;
}
结果: