斐波那契數列及其對數時間演算法

2021-08-20 04:30:58 字數 1065 閱讀 3799

前些天做ieee校內演算法賽的時候,遇到了一道關於斐波那契數列的題,要求是對數時間;今天在牛課網上刷leetcode,看到爬樓梯問題,於是在網上搜尋了一下,自己參考並總結了下斐波那契數列及其演算法。主要參考了知乎這個問題下的回答最高贊回答。

斐波那契數列大家應該都很熟悉:0 1 1 2 3 5 8… ,遞推公式如下: f(

n)=

//位運算版本

int my_power(int x, int n)

return result;

}

例如求210

2

10,10=

(1010)(

2)10=(

1010)(

2)

,分二進位制位上為1和為0兩種情況討論。

所以可以用同樣的方法求矩陣的冪,我們宣告了乙個二階矩陣類,只給了矩陣的四個元素、預設建構函式和過載operator*:

//definition for 2-dimension matrix

struct matrix

matrix& operator*(const matrix& rhs)

};/*對數演算法,利用矩陣的快速冪*/

matrix fast_multi(int n)

return result;

}

因此斐波那契數列的第n項的演算法為:

//這裡沒有考慮int溢位

int fibonacci(int n)

若斐波那契數列的初值為f0和f1:

//這裡沒有考慮int溢位

int fibonacci(int n, int f0, int f1)

最開始說到ieee校內演算法賽的那道題是要求斐波那契數列的前n項和: sn

=f(n

+2)−

f(1)

; sn=

f(n+

2)−f

(1);

這個結論用數學歸納法是非常容易證明的。

斐波那契數列及其應用

這個數列從第2項開始,每一項都等於前兩項之和。常規解法 long long fibonacci unsigned int n 效率更高的解法 include using namespace std int main cout return 0 問題的變種 問題描述 乙隻青蛙一次可以跳上1級台階,也可...

斐波那契數列及其變型

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 f n f n 1 f n 2 class solution int fibonacci int n 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法...

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...