学习笔记
对递归有了初步对了解,在递归模版上写代码比较方便,在算法正确的情况下能保证程序的正确性。
递归调用在处理本层的逻辑时也可以放在下探到下一层的后面,有点类似与二叉树前序与后序的遍历
- 如放在下探到下一层的前面,像是一种自顶向下的访问路径
- 如放在下探到下一层的后面,像是一种自底向上的访问路径 在递归树有分叉与分治相同,需要合并下一层的结果。
在思考递归算法时,要避免人肉递归树,容易陷进去出不来。在思考递归算法时,重要的是确定函数的功能, 用类似与数学归纳法的方法去思考问题。
在整个递归树中,只要关注三层就可以:
- 第一层,初始状态,相当于数学归纳法的 n=1;
- 最后一层,也就是递归的退出情况,terminator;
- 中间任意一层,如第 n 层,这时只要假定 n+1 层的结果已经拿到了的情况下,当前层要做什么处理。