斐波那契數列的遞推公式:
我們嘗試計算斐波那契數列的第n項並輸出。
1、遞迴法
#include
intfib
(int m)
else
}int
main()
說明:在主調函式中,只寫入輸入輸出,在fib()函式中實現計算的功能。
實參n把值傳遞給形參m,函式fib()開始分配記憶體空間。判斷:當m>=3時,返回fib(m-1)+fib(m-2);否則返回1;
例:n=6時 return fib(5)+fib(4); 怎麼知道fib(5)和fib(4)的值呢?
fib(5)=fib(4)+fib(3);fib(4)=fib(3)+fib(2);fib(3)=fib(2)+fib(1);
ok!通過遞推我們得到了fib(3)的值,這樣,fib(4)、fib(5)的值也就得到了。
n為其他值時類似。
2、迭代法
#include
intfib
(int m)
return aw;
}int
main()
說明:主調函式同上,這一次在fib()裡使用迭代的方法計算該數列。
通過遞推公式我們不難看出,
設n=6,
fib(5)=fib(4)+fib(3);fib(4)=fib(3)+fib(2);fib(3)=fib(2)+fib(1);
倒過來看,可以將斐波那契數理解為前數的加和等於後數,則從第一項開始推起,每次向前疊加乙個數,直到找到需要的項數。
while
(m>=2)
3、陣列法
與前兩種方法類似,都是根據遞推公式自上而下或自下而上遞推出斐波那契數。引入陣列的好處時,可以將計算出的數儲存起來,方便在其他地方直接列印或呼叫。
#include
intfib
(int m)
;for
(i=2
;i<=m;i++
)//注意避免陣列越界
return bank[m];}
intmain()
說明:陣列的做法顯然更占用記憶體,而且如果要計算非常大的斐波那契數列的時候,越界就很難避免。 C 斐波那契數列
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 0 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞迴的方法定義 f ...
C 斐波那契數列
斐波那契數列 fibonacci sequence 又稱 分割數列,指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞迴的方法定義 f 1 1,f 2 1,f n f n 1 f n 2 n 3,n n 1.static int func int n i...
c 斐波那契數列
題目描述 faibonacci數列前幾項為 0,1,1,2,3,5,8,其規律是從第三項起,每項均等於前兩項之和。求前n項,並以每行5個數的格式輸出。輸入乙個正整數n 3 n 30 表示斐波那契數列的項數。輸出若干行,每行五個數,每個數使用10個位置輸出。樣例輸入 樣例輸出 0 1 1 2 3 5 ...