求解斐波那契數列,要求時間複雜度為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 我是小白,大神無笑話小弟,只是想記錄下來自己的思路,根據我自己的理...