斐波纳契数

使用动态编程打印第 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];
    }

时间复杂性

上)