Python是否优化了尾递归?
我有以下代码失败,并出现以下错误:
RuntimeError:
超过最大递归深度
我试图重写此代码以允许尾递归优化(TCO)。我相信,如果发生了TCO,则该代码应该会成功。
def trisum(n, csum): if n == 0:
return csum
else:
return trisum(n - 1, csum + n)
print(trisum(1000, 0))
我是否应该得出结论,Python不执行任何类型的TCO,还是只需要以不同的方式定义它?
回答:
你可以通过这样的转换来手动消除递归
>>> def trisum(n, csum):... while True: # change recursion to a while loop
... if n == 0:
... return csum
... n, csum = n - 1, csum + n # update parameters instead of tail recursion
>>> trisum(1000,0)
500500
以上是 Python是否优化了尾递归? 的全部内容, 来源链接: utcz.com/qa/414263.html