題目9 斐波那契數列

2021-07-22 14:24:49 字數 1540 閱讀 5702

斐波那契數列:

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 ...