斐波那契数列算法优化

做一道斐波那契算法问题,结果运行超时

public class Solution {

    public int Fibonacci(int n) {

    if(n == 0){

      return 0;

    }

    if(n == 1){

      return 1;

    }

    return Fibonacci(n - 1) + Fibonacci(n - 2);

    }

}

找到了一篇文章,http://blog.csdn.net/sloder/article/details/8624373

按照其提供的思路:

  保存计算项之前的每一项的值,每一项的计算只调用Fibonacci方法一次,

  实际调用Fibonacci方法的次数只有n-1次,如果n=33,那么调用Fibonacci方法只有32次。 

优化后的代码为:

 1 public class Solution {

 2     public int Fibonacci(int n) {

 3         if (n == 0) {

 4       return 0;

 5     }

 6     if (n == 1) {

 7       return 1;

 8     }

 9     int[] array = new int[n+1];

10     array[0] = 0;

11     array[1] = 1;

12     for (int i = 2; i < n+1; i++) {

13       array[i] = array[i - 1] + array[i - 2];

14     }

15     return array[n];

16     }

17 }

 

你可能感兴趣的:(算法)