学习了一下python3 的递归,这个东西还真是讨厌,而且不迷有那么多毛病。但不迷是要学会。下面是一些递归的关键部分,总结一下。
递归,就是函数在运行的过程中调用自己。
递归几个特点:
1.必须有一个明确的结束条件,要不就会变成死循环了,最终撑爆系统
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3.递归执行效率不高,递归层次过多会导致栈溢出
用途:
可以用于解决很多算法问题,把复杂的问题分成一个个小问题,一一解决。比如求斐波那契数列、汉诺塔、多级评论树、二分查找、求阶乘等。
递归效率不高,因为每递归一次,就多了一层栈,递归次数太多还会导致栈溢出,这也是为什么python会默认限制递归次数的原因。但有一种方式是可以实现递归过程中不产生多层栈的,即尾递归
尾递归
在函数最尾部有return,return值是递归形式调用,且返回值与上一层函数无任何依赖。
例子:
def calc(n):
print(n - 1)
if n > -50:
return calc(n-1)
如上内容总结自:https://www.cnblogs.com/Xuuuuuu/p/10165293.html
对原作者表示感谢,讲的比较透彻。