递归的思想:将一个大问题分割成多个结构与原问题一样的小的子问题,然后解决子问题,最后将子问题的解合并得到原问题的解。
递归的应用:归纳法、分治法、动态规划法
1、归纳法:
1)根据数学归纳法,对参数n做归纳,
2)先假设参数小于n的问题已解决,
3)然后归纳出解决带参数n的问题的方法,
4)最后用归纳出的方法依次解决带参数0,1,…,n-1,n的问题,从而原带参数n的问题得解。
5)应用举例:基数排序、插入排序… …
2、分治法:
1)分解问题:将原问题分解成结构与原问题相同的子问题
2)解决子问题:递归解决分解出来的子问题
3)合并解:将子问题的解组合得到原问题的解
4)应用举例:二分查找算法、归并排序算法… …
3、动态规划法:
1)最优子结构(最优化原理):一个最优的决策序列,其每个子决策序列必须是最优的决策序列。
2)重叠子问题:问题的解通常用递归形式说明,但不用递归调用自身。
3)应用举例:最短路问题,最长公共子序列问题… …