文章目录
原文链接:https://www.yuque.com/cppdev/algo/fcdw3u
1. 递归与分治法的区别
1.1 递归
从上往下的分析,然后回溯:从n的情况一直往下走->走到1(特殊情况)->然后往回计算->最终得到n的情况
必须满足:
- 在每一次调用自己时,必须是在某种意义上更接近于解(每次操作是收敛的):问题规模越来越小
- 必须有一次终止处理或计算的准则:必须要有一个出口
1.2 分治法
利用分治法求解,所得子问题的类型常常和原问题相同,因而很自然地使用递归求解
1.2.1 思路
- 输入【规模为n】的函数或问题
- 用某种方法把输入【分割成k(1<k≤n)个子集】,从而【产生l个子问题】
- 再用某种方法把它们【组合成原来问题的解】