斐波納契數

使用動態程式設計列印第 n 個 Fibonacci 數的自下而上方法。

遞迴樹

                         fib(5)   
                     /             \     
               fib(4)                fib(3)   
             /      \                /     \
         fib(3)      fib(2)         fib(2)    fib(1)
        /     \        /    \       /    \  
  fib(2)   fib(1)  fib(1) fib(0) fib(1) fib(0)
  /    \
fib(1) fib(0)

重疊子問題

這裡 fib(0),fib(1)和 fib(3) 是重疊的子問題 .fib(0) 重複 3 次,fib(1) 重複 5 次,fib(3) 重複 2 次倍。

履行

public int fib(int n){
        int f[] = new int[n+1];
        f[0]=0;f[1]=1;
        for(int i=2;i<=n;i++){
            f[i]=f[i-1]+f[i-2];
        }
        return f[n];
    }

時間複雜性

上)