递归书写方法:
每次写递归算法题都会很乱,无从下手,看了https://coding.imooc.com/class/132.html的教程,把里面老师讲的的笔记记录一下,具体可以去看该老师的教程第七章的7-4节
1. 严格定义递归函数作用,包括参数,返回值,Side-effect.
side-effect指的是我们需要去控制一些出现在函数中的变量的状态,最好确保变量的状态在递归完之后恢复为原来的状态
2. 先一般,后特殊。指的是我们应该先把递归函数的整体框架即递归的函数先写出来,再逐行检查该函数,找出特殊值进行判断,作为递归的出口。
3. 每次调用必须缩小问题规模
4. 每次问题规模缩小程度必须为1.这个由数学归纳法而定义。
我认为递归函数的实现关键在于我们应该先假设(n-1)的递归函数成立,再以此为条件,往下推理。具体看数学归纳法的定义: 若一条等式满足n=1, 且假设n=n-1时等式成立,能根据该条件推算出n=n时等式成立,则该等式成立。