斐波那契數列,指的是這樣乙個數列:1、1、2、3、5、8、13、21、…
也就是除了第乙個和第二個數以外,每一項都等於前兩項之和。
使用經典遞迴的做法如下:
public int fib1(int a)
return fib1(a-1) + fib1(a-2);
}
但是使用經典遞迴的方法效率較低。原因是沒有儲存已經計算過的值。
使用動態規劃的方法。可以提高效率。
public static int fib2(int a)
return list.getlast();
}
原理就是每一次計算完之後,都把計算過的值儲存在list的最尾。
剛開始初始化兩個1,當求第2個斐波那契數時,把前兩個數,相加後儲存到list的最尾,就變成了 1,1,2 ,然後去除頭部的數變成 1,2,以此類推:
當求第3個斐波那契數時,list就是 1,2,3-> 2,3
當求第4個斐波那契數時,list就是 2,3,5->3,5
當求第5個斐波那契數時,list就是 3,5,8->5,8
遞迴和動態規劃 斐波那契數列
程式設計師 面試指南 chapter 4 感受 mulmatrix函式和matrixpower函式寫法要注意細節,需要牢記加速矩陣乘法的演算法思路將時間複雜度降低!暴力遞迴,o 2 n intf1 int n return res 利用矩陣,o log n 牛客上 給出乙個整數 n,請輸出斐波那契數...
動態規劃 斐波那契數列
問 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 斐波那契數列簡單介紹 我的解法 注 從fibonacci n 1 fibonacci n 2 明顯看出使用的是遞迴,此題用遞迴兩三行 即可搞定。但是,若出題者準備著乙個超大的n,那麼很有...
斐波那契數列 遞迴方法和動態規劃(c )
斐波那契額數列 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 include include includeusing namespace std class solution if ...