递归相关 - 图1以下会举例说明我对递归的一点理解:

  1. 如何给一堆数字排序? 答:分成两半,先排左半边再排右半边,最后合并就行了,至于怎么排左边和右边,请重新阅读这句话。
  2. 孙悟空身上有多少根毛? 答:一根毛加剩下的毛。
  3. 你今年几岁? 答:去年的岁数加一岁,1999 年我出生。

递归代码最重要的两个特征:结束条件和自我调用。自我调用是在解决子问题,而结束条件定义了最简子问题的答案。
_

步骤:

  • 分析问题结构
  • 找到最小子问题
  • 整体把握,跳出细节

    技巧:

  • 相信一个函数可以完成,不要跳入细节

分治:

三步走:分解 -> 解决 -> 合并

  1. 分解原问题为结构相同的子问题。
  2. 分解到某个容易求解的边界之后,进行递归求解。
  3. 将子问题的解合并成原问题的解。