❶ c語言求N!用遞歸
fac()函數中沒有return應該會編譯報錯的。代碼正解如下:
intfac(intn)
{
intfact;
if(n==1)
returnfact=1;
else
returnfact=fac(n-1)*n;
}
❷ C語言用遞歸求n!
int fac(int n)
{
long fact;
if (n == 1)
fact = 1;
else //加上這個
fact = fac(n-1)*n;
return fact;
}
❸ 用C語言遞歸的方法編寫程序求斐不拉契數列之和(n個數之和)
#include<stdio.h>
intFibonacci(intn)
{
if(n==1||n==2)//遞歸結束的條件,求前兩項
return1;
else
returnFibonacci(n-1)+Fibonacci(n-2);//如果是求其它項,先要求出它前面兩項,然後做和。
}
intmain()
{
intn,s=0,i;
printf("pleaseinputn:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=s+Fibonacci(i);
}
printf("Result:%d ",s);
return0;
}
❹ 漢諾塔n=4(4個盤)c語言遞歸編程代碼
/****************************
漢諾塔的演算法就3個步驟:
第一,把a上的n-1個盤通過c移動到b。
第二,把a上的最下面的盤移到c。a成了空的。
第三,因為n-1個盤全在b上了,所以把b當做a.
重復以上步驟就好了。所以演算法看起來就簡單多了。
******************************/
#include<stdio.h>
staticintm=0;
voidmove(intn,chara,charb,charc)
{
if(n==1)
{
m++;
printf("第%d次移動: ",m);
printf(" %c->%c ",a,c);//當n只有1個的時候直接從a移動到c
}
else
{
move(n-1,a,c,b);//第n-1個要從a通過c移動到b
m++;
printf("第%d次移動: ",m);
printf(" %c->%c ",a,c);
move(n-1,b,a,c);//n-1個移動過來之後b變開始盤,b通過a移動到c,這邊很難理解
}
}
intmain()
{
intn=4;
//printf("請輸入要移動的塊數:");
//scanf("%d",&n);
move(n,'a','b','c');
return0;
}
❺ 應用遞歸方法求n!(c語言)
#include<stdio.h>
longfac(intnum);
intmain(void)
{
intnum;
printf("輸入一個正整數:");
scanf("%d",&num);
printf("%d的階乘是:%d",num,fac(num));
return0;
}
longfac(intnum)
{
longresult;
if(num<2)
return1;
else
returnnum*fac(num-1);
}
❻ c語言怎麼用遞歸調用函數的方法求n的階乘
1、打開VC6.0軟體,新建一個C語言的項目:
❼ C語言遞歸問題
#include<stdio.h>
intcount(intn)
{if(n==2)return1;
returnn-1+count(n-1);
}
intmain()
{intn;
scanf("%d",&n);
printf("%d
",count(n));
return0;
}
❽ 一個簡單的C語言題。用遞歸實現n!+(n-1)!+(n-2)!+...+2!+1!
//只一層遞歸很難,我用兩個遞歸實現的,你先看看。
#include
"stdio.h"
#include
//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));
}
❾ C語言類問題.用遞歸法求從n個人中選擇k個人組成一個委員會的不同組合數.
#include<stdio.h>
#include<stdlib.h>
intComb(intn,intk)
{
if(n==k||k==0)
return1;//邊界值
else
returnComb(n-1,k)+Comb(n-1,k-1);
}
voidmain()
{
intn,k;
printf("請輸入總人數n:");
scanf("%d",&n);
printf("請輸入委員會人數k:");
scanf("%d",&k);
if(k<0||n<0||k>n)//輸入數據的合法性判斷
printf("輸入不合法!");
else
printf("組合數有%d個!",Comb(n,k));
system("pause");
}