大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0,第1項是1)。n<=39
直接由斐波那契數列的定義f(n) = f(n-1) + f(n-2)
可以得到遞迴的公式,為了避免重複求解已經結果的問題,可以使用備忘錄(即陣列),將備忘錄初始化為-1,遞迴時進行判斷,若已經求解過就直接返回
public
int res;
public
intfibonacci
(int n)
if(n ==1)
if(res[n]!=-
1)return res[n]
; res[n]
=fun
(n -1)
+fun
(n -2)
;return res[n]
;}
這道題也可以作為動態規劃入門題,動態規劃實際是乙個填表的過程,要求解f(n)
則必須知道子問題,因此先解決最小的子問題,即從0,1,2…開始
class
solution
}
遞迴和動態規劃 斐波那契數列
程式設計師 面試指南 chapter 4 感受 mulmatrix函式和matrixpower函式寫法要注意細節,需要牢記加速矩陣乘法的演算法思路將時間複雜度降低!暴力遞迴,o 2 n intf1 int n return res 利用矩陣,o log n 牛客上 給出乙個整數 n,請輸出斐波那契數...
斐波那契數列 遞推 遞迴 備忘錄 動態規劃
當n 0時,f n 0 當n 1時,f n 1 當n 1時,f n f n 1 f n 2 遞迴演算法 cpp view plain copy intfun intn 備忘錄方法 cpp view plain copy include using namespace std const intn 1...
動態規劃 斐波那契數列
問 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 斐波那契數列簡單介紹 我的解法 注 從fibonacci n 1 fibonacci n 2 明顯看出使用的是遞迴,此題用遞迴兩三行 即可搞定。但是,若出題者準備著乙個超大的n,那麼很有...