故事來源: 一天,皇帝騎在馬上,率領着文武百官,在號兵鼓手、馬隊的簇擁下,浩浩蕩蕩向比薩市費波納茨的居所進發。弗德烈皇帝向費波納茨提出了這樣一個問題:如果一對兔子從第二個月開始,每月可產一對兔子,試問一年後這個特定的區域裏共有多少對兔子?
費波納茨順口回答了皇帝的問題:共有144對,並把他的計算方法說了出來——1,1,2,3,5,8,13,21,34,55,89,144,這就是費波納茨數列的原版。根據這種計算方法,可以把這個數列無限量地擴大下去,……55,89,144,233,377,610。費波納茨道出了一個自然地數列,後人把它叫做費波納茨數列。
斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……。這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式爲:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比內公式”,是用無理數表示有理數的一個範例。)(√5表示根號5)
方法一:循環實現
int fun(int n) {
int sum = 0, tmp1=1, tmp2 = 1;
if (n < 2)
return 1;
for(int i = 2; i <= n; i++) {
sum = tmp1 + tmp2;
tmp2 = tmp1;
tmp1 = sum;
}
return sum;
}
方法二:遞歸實現
int fun(int n) {
int sum = 0;
if (n < 2)
return 1;
for(int i = 2; i <= n; i++) {
sum = fun(i-2) + fun1(i-1);
}
return sum;
}