斐波那契数列算法优化
做一道斐波那契算法问题,结果运行超时
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 }