樓上說的同時執行,我愚見覺得是不對的。應該是先執行bashan(n-1),然后再執行n-2的那句。兩個都是分別執行遞歸到計算出結果后,相加作為
創新互聯建站主營昆都侖網站建設的網絡公司,主營網站建設方案,手機APP定制開發,昆都侖h5微信平臺小程序開發搭建,昆都侖網站營銷推廣歡迎昆都侖等地區企業咨詢
返回值
。
也就是類似一個
二叉樹
的
先序遍歷
差不多的感覺。比如說,bashan(4)。執行順序如下
bashan(4),bashan(3),bashan(2)=2
bashan(2)=2
bashan(4)=2-2=0
如果這里不存在異步多線程之類的操作,就應該從左到右,從上到下,按照順序完成。
代碼:
#includelt;stdio.hgt;
int Fib(int n){//自定義函數
if(nlt;0)
return-1;
else if(n==0)
return 0;
else if(n==1)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
int main(){
int num;
printf("請輸入要求取的第n項斐波那契數列n=");
if(scanf("%d",num)){
if(numgt;=0){
printf("%d",Fib(num));
}
else
printf("Error!!!");
return 0;
}
return 0;
}
擴展資料:
斐波那契數列排列組合
有一段樓梯有10級臺階,規定每一步只能跨一級或兩級,要登上第10級臺階有幾種不同的走法
這就是一個斐波那契數列:登上第一級臺階有一種登法;登上兩級臺階,有兩種登法;登上三級臺階,有三種登法;登上四級臺階,有五種登法……
1,2,3,5,8,13……所以,登上十級,有89種走法。
類似的,一枚均勻的硬幣擲10次,問不連續出現正面的可能情形有多少種?
答案是(1/√5)*{[(1+√5)/2]^(10+2)-[(1-√5)/2]^(10+2)}=144種。
求遞推數列a⑴=1,a(n+1)=1+1/a(n)的通項公式
由數學歸納法可以得到:a(n)=F(n+1)/F(n),將斐波那契數列的通項式代入,化簡就得結果。
參考資料:
百度百科——斐波那契數列
#include
#define
COL
5
//一行輸出5個
long
fibonacci(int
n)
{
//fibonacci函數的遞歸函數
if
(0==n||1==n)
{
//fibonacci函數遞歸的出口
return
1;
}
else
{
return
fibonacci(n-1)+fibonacci(n-2);
//反復遞歸自身函數直到碰到出口處再返回就能計算出第n項的值
}
}
int
main(void)
{
int
i,n;
n=
17;
printf("Fibonacci數列的前%d項\n",
n);
for
(i=0;
i
{
printf("%-10ld",fibonacci(i++));
//調用遞歸函數并且打印出返回值
if(i%COL==0)
{
//若對COL取余等于0就換行,也就是控制每行輸出多少個,
//而COL=10就是每行輸出10個
printf("\n");
}
}
printf("\n");
return
0;
}
#includestdio.h
long func(long n)
{
if(n==0||n==1)return n;
else return func(n-1)+func(n-2);
}
main()
{
long n;
printf("please input n:");
scanf("%ld",n);
printf("the result is %ld",func(n));
}
分享題目:斐波那契函數c語言遞歸 斐波那契數列c語言遞歸法
新聞來源:http://vcdvsql.cn/article2/doiedic.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、電子商務、商城網站、營銷型網站建設、網站制作、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯