一个简单的C语言题。用递归实现n!+(n-1)!+(n-2)!+...+2!+1!

#include<stdio.h>
#include<conio.h>
//10!+9!+....+1!
int fun(int n)
{

}
int main()
{
printf("%d\n",fun(10));
getch();
return 0;
}

说明:请补充fun函数,用递归实现该功能

第1个回答  2013-04-20
//只一层递归很难,我用两个递归实现的,你先看看。
#include "stdio.h"
#include<conio.h>
//10!+9!+....+1!

int s(int n)
{
if(n>1)
return s(n-1)*n;
else
return n;
}
int fun(int n)
{
if(n>1)
return fun(n-1)+s(n);
else
return s(n);
}
int main()
{
printf("%d",fun(10));
getch();
return 0;
}

//实在想用一个函数递归,可以如下:
#include "stdio.h"
int fun(int n){
int s=1;
if(n>1)
{
for(int i=1;i<=n;i++)
s*=i;
return fun(n-1)+s;
}
else
return 1;
}

int main(){
printf("%d",fun(10));
}
第2个回答  2013-04-20
int fun(int n)
{
int N=1;
for(int i =1 ;i<=n;i++)
{
N=N*i;
} //求n!的值

return fun(n-1)+N;//递归调用
}本回答被提问者采纳
第3个回答  2013-04-20

建议先写个求n!的函数

int fun1(int n)
{
if(n>1)
fun1(n)*=fun1(n-1);
else if(n==1)
return fun1(n);
else
return -1;
}

然后求和就可以了

相似回答