斐波那契数列算法优化

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

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 }

 

posted on 2015-04-08 13:56  李亚男  阅读(287)  评论(0编辑  收藏  举报

导航