【问题标题】:Are the Fibonacci series a Dynamic-programming problem?斐波那契数列是动态规划问题吗?
【发布时间】:2014-07-25 17:12:01
【问题描述】:

我说的是计算第n个斐波那契数的问题。 这里的一些用户说这实际上是一个 DP 问题,(请参阅这个问题的第一个答案和相同答案的 cmets What is dynamic programming?)但其他人说这不是因为它没有优化任何东西,而是因为其他原因,是否如此?

【问题讨论】:

  • 这个问题似乎跑题了,因为它与编程无关。
  • 有一个简单的代数公式可以计算任何斐波那契值,因此不需要“动态”程序:en.wikipedia.org/wiki/Fibonacci_number#Closed-form_expression
  • 我假设“dp”表示“动态编程”。如果是这样,那么是的;这是一个编程问题。这不是一个很好的。原始发帖人需要对他的家庭作业进行自己的分析。当然,这是他的导师对他的期望。
  • @K.AlanBates 我没有任何任务,我只想知道
  • 那么您在来这里之前至少可以进行一次谷歌搜索。如果您知道什么是动态规划并且您知道什么是斐波那契数列,那么您已经知道您的搜索条件。如果您确实必须对提出的问题有答案:“也许;这取决于您的要求。”

标签: dynamic-programming fibonacci


【解决方案1】:

来自Wikipedia动态规划页面,

 var m := map(0 → 0, 1 → 1)
 function fib(n)
   if key n is not in map m 
       m[n] := fib(n − 1) + fib(n − 2)
   return m[n]

This technique of saving values that have already been calculated is called memoization; this is 
the top-down approach, since we first break the problem into subproblems and then calculate and 
store values.

因此,它是用于获取序列中第 N 个数字的技术之一。

编辑 - 对于添加的问题,记忆是 DP 的一种形式。

【讨论】:

  • 感谢您的回复。但是您正在使用 DP 技术来解决问题,但这是否会使 Fib.系列 DP 问题?
  • 没有什么比 DP 问题更重要了。可以使用这种技术解决的问题可以称为DP问题。如果需要,您可以将其称为 DP 问题。但许多 DP 问题也有非 DP 解决方案。
猜你喜欢
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
相关资源
最近更新 更多