一、問題描述
要求輸入乙個整數n,請你輸出斐波那契數列的第n項
二、演算法分析
給出一系列斐波拉契數列:0 1 1 3 5 8 13 21 。。。
通過觀察,很容易發現:
1 n=0,1
f(n) = f(n-1)+f(n-2) n>1
三、演算法設計
遞迴法:根據遞迴公式實現遞迴函式
缺點:遞迴過程中會包含很多重複的運算,所以效率不高
迭代法:迭代的思想就是不斷地用變數的舊值遞推新值的過程。迭代法相對於遞迴效率要高,因為節省了重複計算
四、編碼實現
(1)遞迴法
public int fibonacci(int n)
(2)迭代法
public int fibonacci1(int n)
for(int i=2; i<=n;i++)
return currentnum;
}
迴圈斐波那契數列 斐波那契數列的兩種實現
最先研究這個數列的人是義大利人斐波那契,leonardo fibonacci,他在描述兔子生長的數目時用上了這數列 每個月兔子的總對數,就是這樣乙個序列 1,1,2,3,5,8,13,21.這個序列從第三項開始,每一項都等於前兩項之和。在數學上,斐波那契數列是以遞迴的方法來定義 f 1 1 f 2 ...
斐波那契數列的兩種優化
遞迴存在許多子問題的重複計算問題,時間複雜度較高。public class fbsl public static intfb int n 首先我們需要乙個全域性的雜湊表來儲存當你第n個數所對應的前兩個數的和。class fb 一旦發現我曾經計算過我就不再遞迴計算,直接返回map集合存的值 if ma...
斐波那契數列 的兩種實現方式
一 先要回答乙個問題 什麼是婓波那契數列?答案在這裡 二 看 1 第一方法 遞迴實現 public static void main string args public static int fibonacci int i else if i 1 return fibonacci i 2 fibo...