斐波那契數列的快速解法

2021-07-08 15:57:33 字數 592 閱讀 4546

求解斐波那契數列,要求時間複雜度為o(

logn

) 主要思路是快速冪和矩陣乘法的結合律

利用數學歸納法來證明。

快速冪的思想:

當n為偶數的時候 an

=an2

∗an2

當n為奇數的時候 an

=a(n

−1)2

∗a(n

−1)2

∗a那麼fn

的問題就可以換成求矩陣的n次冪了。

**實現

class solution ,};

public

intfibonacci(int n)

// 求 a ^ n

public

static

int power(int n)else

if(n % 2 == 0)else

if(n % 2 == 1)

return a;}/*

*兩個矩陣相乘

*/public

static

int matrixmultiply(int a, int b)

}

斐波那契數列解法

方法一 常規解法 def demo month 定義變數 a,b分別表示一月和二月的數目 a 0 a為第乙個數值 b 1 b為第二個數值 定義乙個計數器 i 0 while i month 列印每次的數值 print a a,b b,a b i 1 nume demo 3 方法二 函式的遞迴 def...

斐波那契數列解法

1 概念 在數學上,費波那契數列是以遞迴的方法來定義 f0 0 f1 1 fn fn 1 fn 2 n 2 用文字來說,就是費波那契數列由0和1開始,之後的費波那契係數就是由之前的兩數相加而得出。首幾個費波那契係數是 0,1,1,2,3,5,8,13,21,34,55,89,144,233 oeis...

題目 斐波那契數列。 解法二

程式分析 斐波那契數列 fibonacci sequence 又稱 分割數列,指的是這樣乙個數列 0 1 1 2 3 5 8 13 21 34 數學上的解法是 f0 0 n 0 f1 1 n 1 fn f n 1 f n 2 n 2 我是小白,大神無笑話小弟,只是想記錄下來自己的思路,根據我自己的理...