如何在python中实现尾递归优化?
python不会优化尾部递归。默认情况下,递归的最大深度约为1000。当然,可以修改底层的默认最大深度。但是我们可以使用python内置的yield将尾部递归函数转换为生成器。我只需要连续执行它的下一个方法。递归的主要思想是能够重复一些动作,如简单阶乘、幂、回溯八皇后、数独、河内塔和分形。
由于堆栈机制,一般递归可以保持一些变量处于历史状态,例如返回x*power。。。您提到过,但是有些问题可能很大或太深,需要尽可能避免递归,因为堆栈可能会溢出。另一个
问题是python不支持尾部递归优化
所以尽量避免递归。
defpower(x,n)
如果n<0:
return1
returnx*power(x,n-1)
power(3,3)
3*power(3,2)
3*(3*power(3,1))
3*(3*power(3,0))
3*(3*1)),其中n=0,return1
3*(3*3)
3*9
当函数参数n=0时,开始撤退到第一次通电结束。
关于python递归函数怎样理解?
#函数返回两个值:递归次数,所需值
如果m==1:返回1,m
返回1,sum(m-1)[0],msum(m-1)[1
]cishu=sum(10)[0
]printcishu
>>>defsum(m,n=1):]。。。[tifm==1:返回n,m。。。[树转角n,msum(m-1,n1)[1
>>>打印sum(10)[0
>>>打印sum(5)[0
]5]
原文标题:python递归算法 如何在Python中实现尾递归优化?,如若转载,请注明出处:https://www.saibowen.com/tougao/23545.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。