Py002-01-05递归
递归
原理就是自己调用自己
1 | def xx(n): |
每次调用函数都会将其压入栈中,栈有一定的限制,超过就会溢出了
就像步枪的「弹匣」是由容量限制的
阶乘 1 2 3 4 … n
1 | def xxx(n): |
正确使用递归
- 要有结束条件,否则就死循环了
- 每次进入更深一层递归时,问题规模要比上一次有所减少
- 递归效率不高
适用场景
- 兔子数列—->斐波那契
- 汉诺塔
递归的优化(尾递归)
- 递归之所以效率低就是因为每执行一步就会压栈
- 每次压栈的执行结果要保存 如 4的阶乘 需要知道 3阶乘的结果 。。。。
1 | # 注意这个代码在python是不支持的会报错, 这样的代码实际就是尾递归。 |