斐波那契數列:
1. 原始方法 ,經典方法
#includeusing namespace std;
long long fibonacci(unsigned n)
2. 改進方法,將已經計算出的值儲存起來 下次直接使用,不用再次計算。
f(0) , f(1) 得f(2)=f(0)+f(1),,,f(3)=f(2)+f(1);,,,,,,
long long fibonacci(unsigned n)
; if(n<2)
return result[n];
long long fibonaccione=1;//f(n-1)
long long fibonaccitow=0;//f(n-2)
long long fibon=0;
for(unsigned int i=2;i<=n;++i)
return fibon;
}
還有一些題目都可以看成是斐波那契數列的應用。
應用一:
題目二:乙隻青蛙依次可以跳上1級台階,也可以跳上2級台階,求該青蛙跳上乙個
n級的台階總共多少種跳法。
1. 只有1級台階 ,只有一種跳法。f(0)=0 / f(1)=1
2. 2級台階 兩種跳法。一種是分兩次跳 f(2)=2
3. 3級台階 f(n)=f(n-1)+f(n-2)
應用二:
將題目二:條件改為:乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。。。。
也可以跳上n級台階,此時該青蛙跳上乙個n級的台階總共多少種跳法。
1. 只有1級台階 ,只有一種跳法。 f(1)=1
2. 2級台階 兩種跳法。一種是分兩次跳 f(2)=2
......
用數學歸納法可以得到: f(n)=2^(n-1)
應用三:
題目:用2*1的小矩形橫著或豎著去覆蓋更大的矩形。請問用8個2*1的小矩形無重疊
地覆蓋乙個2*8的大矩形,總共多少種方法。
1. 先把 2*8 的覆蓋方法記為 f(8)。用第乙個1*2的小矩形去覆蓋大矩形的最左邊時有兩個
選擇,豎著放或者橫著放。
2.豎著放時,右邊還有2*7 的區域,這時的覆蓋方法記為 f(7) .
3.橫著放時,當1*2 的小矩形橫著放在左上角的時候,左下角必須橫著放乙個1*2的小矩形,
而在右邊還剩乙個2*6的區域,這種情況下覆蓋方法記為 f(6).因此 f(8)=f(6)+f(7).
可以看出此時仍然是斐波那契數列。
public class solution
if (target == 1)
if (target == 2)
return rectcover(target - 1) + rectcover(target - 2);
}}
9 斐波那契數列
寫乙個函式,輸入n,求斐波那契數列 fibonacci 數列的第n項,斐波那契數列的定義為 方法一 用遞迴的方法來求斐波那契數列 方法二 用迴圈來求斐波那契數列,用簡單的方法從下往上計算,先計算根據f 0 f 1 計算出f 2 在根據f 1 f 2 計算出f 3 依次計算到f n 時間複雜度為o n...
006 題目 斐波那契數列
程式分析 斐波那契數列 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 乙個遞迴函式 def fibonacci...
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...