• 递归:是一种编程技巧,一种解决问题的思维方式
    • 分治算法和动态规划:很大程度上是递归思想基础上的(虽然动态规划的最终版本大都不是递归了,但解题思想还是离不开递归),解决更具体问题的两类算法思想
    • 贪心算法:贪心算法是动态规划算法的一个子集,可以更高效解决一部分更特殊的问题

    递归和枚举的区别在于:枚举是横向地把问题划分,然后依次求解子问题,而递归是把问题逐级分解,是纵向的拆分

    归并排序,典型的分治算法->分治,典型的递归结构

    分治算法可以分三步走:分解 -> 解决 -> 合并

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