【问题标题】:Whats the difference between normal recursive solutions and Dynamic Programming related recursive solutions? [closed]普通递归解决方案和动态规划相关的递归解决方案有什么区别? [关闭]
【发布时间】:2020-09-20 03:24:33
【问题描述】:

谁能帮我解决这个问题,DP的迭代方法与递归方法有何不同。

【问题讨论】:

  • 不要垃圾语言标签。
  • DP 的迭代方法与递归方法的不同之处在于它不是递归的
  • 或者正如GeeksforGeeks 所说:动态编程主要是对普通递归的优化。无论我们在哪里看到重复调用相同输入的递归解决方案,我们都可以使用动态编程对其进行优化。
  • @Andreas 似乎可以将其转化为答案。至少对我来说,这是一个有趣且有用的角度。
  • @Andreas——除了递归通常与记忆一起使用,这使得这两种解决方案在计算复杂度上更加等效。递归的区别通常是自上而下,而 DP 是自下而上。

标签: recursion data-structures iteration dynamic-programming


【解决方案1】:

动态编程和递归不一定是对立的。你在想的是记忆与动态编程。

动态编程是一种尽可能减少重复计算的方法。这通常意味着采用自下而上的方法——即首先计算小规模问题的答案,然后使用这些答案来计算高阶问题。迭代方法通常用于动态编程,因为它看起来很自然(尽管您也可以递归地进行)。

记忆化是解决问题的自上而下的方法,通常通过递归来完成,因为它更自然。在这种情况下,您从一个高阶问题开始,然后递归调用低阶问题来解决它。

在这两种情况下,您都使用数据结构来存储到目前为止计算的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2013-07-22
    • 2011-07-20
    • 2015-10-25
    • 2021-11-03
    相关资源
    最近更新 更多