Recursion 正常递归解和与动态规划相关的递归解之间有什么区别?

Recursion 正常递归解和与动态规划相关的递归解之间有什么区别?,recursion,data-structures,iteration,dynamic-programming,Recursion,Data Structures,Iteration,Dynamic Programming,有人能帮我解决这个问题吗,DP的迭代方法与递归方法有何不同。动态规划和递归不一定是对立的。你想的是记忆化和动态编程 动态规划是一种尽可能减少重复计算的方法。这通常意味着采用自下而上的方法,即首先计算小规模问题的答案,然后使用这些答案计算高阶问题。迭代方法通常用于动态规划,因为它看起来很自然(尽管您也可以递归地进行) 记忆化是解决问题的自上而下的方法,通常通过递归完成,因为它更自然。在本例中,您从一个高阶问题开始,并对低阶问题进行递归调用以解决它 在这两种情况下,您都使用数据结构来存储迄今为止计算

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

动态规划和递归不一定是对立的。你想的是记忆化和动态编程

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

记忆化是解决问题的自上而下的方法,通常通过递归完成,因为它更自然。在本例中,您从一个高阶问题开始,并对低阶问题进行递归调用以解决它


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

不要垃圾邮件langauge标记。DP的迭代方法不同于递归方法,因为它不是递归的。或者正如所说:动态编程主要是对普通递归的优化。只要我们看到递归解决方案重复调用相同的输入,我们就可以使用动态规划对其进行优化。@Andreas似乎可以将其转化为答案。至少对我来说,这是一个有趣而有用的角度。@Andreas--除了递归通常与记忆一起使用,这使得两个解在计算复杂度上更加等价。递归的区别通常是自顶向下的,而DP是自下而上的。