普通递归解决方案和与动态编程相关的递归解决方案之间有什么区别?

时间:2020-06-01 18:42:18

标签: recursion data-structures iteration dynamic-programming

有人可以帮助我吗?DP的迭代方法与递归方法有何不同?

1 个答案:

答案 0 :(得分:0)

动态编程和递归不一定是相反的。您在想的是记忆化与动态编程。

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

记忆是自上而下的解决问题的方法,通常通过递归进行,因为它更自然。在这种情况下,您将从高阶问题开始,然后递归调用低阶问题以解决该问题。

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