c语言编写递归函数求解1!+(1!+2!)+。。。+(1!+2!+。。。+n!)

如题所述

#include <stdio.h>
int fact(int n)
{if(n==1)return 1;
 return n*fact(n-1);
}
int sum(int n)
{if(n==1)return fact(1);
 return fact(n)+sum(n-1);
}
int allsum(int n)
{if(n==1)return 1;
 return sum(n)+allsum(n-1);
}
int main()
{int n;
 scanf("%d",&n);
 printf("%d\n",allsum(n));
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-21
#include <stdio.h>
typedef unsigned long long int uInt64;
//递归求n!的值
uInt64 func(int n)
{
    if(n == 1)
        return 1;
    else
        return n*func(n-1);
}
int main()
{
int n,i,j;
uInt64 sn,an; //an表示每一项的和
printf("n = ");
scanf("%d",&n);
for(i=1,sn=0;i<=n;i++){
for(an=0,j=1;j<=i;j++){
an+=func(j);
}
sn+=an;
}
printf("1!+(1!+2!)+(1!+2!+...+%d!)=%llu\n",n,sn);
return 0;
}

//示例运行结果
F:\c_work>a.exe
n = 3
1!+(1!+2!)+(1!+2!+...+3!)=13

F:\c_work>a.exe
n = 4
1!+(1!+2!)+(1!+2!+...+4!)=46

本回答被网友采纳
第2个回答  2017-12-21
#include<stdio.h>

unsigned long fact(long n)
{
unsigned long sum=1;
long i;

if(1==n)
return 1;
for(i=1;i<=n;i++)
sum*=i;
return sum+fact(n-1);
}
int main()
{
unsigned long sum=0;
long i,n;

scanf("%ld",&n);
for(i=1;i<=n;i++)
sum+=fact(i);
printf("1!+(1!+2!)+...+(1!+2!+...+%ld!)=%lu\n",n,sum);
system("PAUSE");
return 0;
}
相似回答