使用动态编程的第n个斐波纳契数

时间:2015-01-13 21:41:34

标签: java dynamic-programming fibonacci

我能够理解给定HERE的动态编程实现。

但我不清楚破解编码面试书中给出的另一个版本,我正在复制粘贴。有人可以帮助我理解这一点,而且这并不比上面的geeksforgeek动态编程实现更昂贵。

int[] fib = new int[max];
int fibonacci(int i){
if(i == 0) return 0;
if(i == 1) return 1;
if (fib[i] != 0) return fid[i];
fib[i] = fibonacci(i-1) + fibonacci(i-2);
return fib[i];
}

1 个答案:

答案 0 :(得分:1)

基本上int[] fib是存储i斐波纳契数的缓存。

这是一个很好的节省时间。否则递归的斐波纳契程序需要重新计算很多值。

E.g。

fib[8] = fibonacci(7) + fibonacci(6)

但是:

fib[7] = fibonacci(6) + fibonacci(5)

如您所见,没有缓存,计算两次需​​要fibonacci(6)的值。