面试题十:斐波那契数,青蛙上楼梯
思路:可自上往下递归,但是递归数目大时会栈溢出,而且慢。使用循环迭代自下往上最实在。
- 如果要求在二维数组上搜索路径,通常使用递归,如果不允许递归那么就是用栈来模仿递归
- 求某个问题的最优解,并且该问题可以划分为若干个子问题,那我们可以尝试动态规划,如果我们此时使用递归会发现,子问题中存在重叠的更小子问题。应避免这样做。我们可以用自下而上的循环代码实现,也就是把子问题最优解先算出来,用一维数组或二维数组存储,接下来就可以根据子问题的解计算大问题的解
- 假设面试官提示在分解子问题的时候是否存在某个特殊的选择,如果采用这样的选择将一定得到最优的解,那么可能适用贪心算法
浪波激泥