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

回到顶部