有人可以帮助我吗?DP的迭代方法与递归方法有何不同?
答案 0 :(得分:0)
动态编程和递归不一定是相反的。您在想的是记忆化与动态编程。
动态编程是一种解决问题的方法,可以最大程度地减少重复计算。这通常意味着采取自下而上的方法-即您首先计算较小规模问题的答案,然后使用这些答案来计算高阶问题。迭代方法通常用于动态编程,因为它看起来很自然(尽管您也可以递归执行)。
记忆是自上而下的解决问题的方法,通常通过递归进行,因为它更自然。在这种情况下,您将从高阶问题开始,然后递归调用低阶问题以解决该问题。
在两种情况下,您都使用数据结构来存储到目前为止计算出的值。