演算法--斐波那契數列--java
阿新 • • 發佈:2019-02-11
定義
F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
遞迴實現
遞迴實現 演算法簡單明瞭 但效率較低
public static void main(String[] args) {
int n = 10;
int result = f(n);
System.out.println(n + "-->" + result);
}
private static int f(int n) {
if (n <= 1) {
return 1;
} return f(n - 1) + f(n - 2);
}
優化版
在原有演算法的基礎上保留計算結果, 本演算法可以繼續優化 只保留最後兩次的計算結果
private final static Map<Integer, Integer> resultMap = new HashMap<>();
static {
resultMap.put(0, 1);
resultMap.put(1, 1);
}
public static void main(String[] args) {
int n = 10;
System.out.println(n + "-->" + f(n));
}
private static int f(int n) {
if(n<0){
return 0;
}
if(!resultMap.containsKey(n)){
resultMap.put(n, f(n-1)+f(n-2));
}
return resultMap.get(n);
}