最近重新研读了下《挑战程序设计》对动态规划和递归的关系有了点新的理解,之前的理解过于机械化,单纯的以为根据递推公式可以直接写DP代码。
通俗的来说,
递归 是 考虑所有的情况,一般使用搜索(DFS /BFS)来实现。
在那些 可以转换为 DP 的递归算法中, 必定有很多重复的情况。
比如要做以下算术
1 + 1
1 + 1 + 1
2 + 1 + 1
3 + 1 + 1
那么如果用遍历思维
最近重新研读了下《挑战程序设计》对动态规划和递归的关系有了点新的理解,之前的理解过于机械化,单纯的以为根据递推公式可以直接写DP代码。
通俗的来说,
递归 是 考虑所有的情况,一般使用搜索(DFS /BFS)来实现。
在那些 可以转换为 DP 的递归算法中, 必定有很多重复的情况。
比如要做以下算术
1 + 1
1 + 1 + 1
2 + 1 + 1
3 + 1 + 1
那么如果用遍历思维