1. 程式人生 > >演算法--斐波那契數列--java

演算法--斐波那契數列--java

定義

F(0)=1F(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); }