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