【问题标题】:nth fibonacci number using using dynamic programming使用动态规划的第 n 个斐波那契数
【发布时间】:2015-01-13 21:41:33
【问题描述】:

我能够理解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];
}

【问题讨论】:

  • 我建议您在调试器中运行它以查看该方法的行为方式。之后应该清楚动态规划如何计算第 n 个斐波那契数。
  • Line 5, column 25: identifier 'fid' not found

标签: java dynamic-programming fibonacci


【解决方案1】:

基本上int[] fib 是一个缓存,其中存储了ith 斐波那契数。

这是一个很好的节省时间。否则递归斐波那契过程将需要重新计算大量值。

例如

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

然后:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多