代替循环的算法,核心:“层层递进,层层回归,复杂问题子类分解。”
本文参考3W学习方法来叙述内容。
一、What
1、什么是递归算法?
递归算法(Recursion Algorithm),在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。–引自《百度百科》
2、递归与循环的比较?
- 相似点:都用来做重复任务
- 不同点:递归有去有回,循环有去无回
递归算法对问题的描述更清晰,但多次调用函数会增大性能开销。循环虽然比递归效率高,但描述问题不够清晰。
以两者的使用需要根据适宜的场景灵活选择。
二、Why
1、为什么需要掌握递归算法?
有人说:“人理解迭代,神理解递归”,递归是一种奇妙的思维方式,递归算法实现的代码更简洁、描述问题能力更强。
三、How
1、递归三要素?
- 递归终止条件
- 递归终止时的操作
- 提取重复的逻辑,缩小问题规模
2、递归算法模型?
FUNCTION resolve(bigParams) {
if(end) {
// 递归终止时的操作
}else{
// 规模减小,bigParams变为smallParams
// 层层递进中的操作
resolve(smallParams)
// 层层回归中的操作
}
}