递归
2018-07-19 21:57 冻奶香甜玉米片 阅读(256) 评论(0) 收藏 举报sys.setrecursionlimit(1500) 设置递归层次为1500层
sys.getrecursionlimit 得到最大地递归层次
一个正常的递归必须设置结束条件,递归结束后会返回到上一层函数调用其的位置,继续执行未执行的代码
递归的特征:
1.递归的每一次进入判断条件都应该更加接近结束条件
2.必须有结束条件
3.执行小效率不高,因为程序的控制权以为一层层进入一层层退出栈帧而不断交换,这会导致效率低下的问题
栈帧:每一次调用函数(猜想是递归函数)所有变量之类的所占的内存

尾递归:递归的优化,下一层函数与当前层毫无关系,即可进入下一层函数时立刻释放当前层内存,当前层已经没有活跃的代码了,可以解决效率低的问题
例如:
def func(n):
print(n)
return func(n-1)
当前层已经没有活跃的代码了,已经检测到return了
但是python的解释器没有做尾递归的优化,依旧是生成许多栈,C有这种优化
浙公网安备 33010602011771号