【发布时间】:2018-08-10 01:53:06
【问题描述】:
所以我试图制作一个简单的程序来计算谐波级数的总和,然后打印结果。但是递归限制会阻止它继续进行。
这是程序:
def harm_sum(n):
if n < 2:
return 1
else:
return (1 / n) + (harm_sum(n - 1))
x = 1
while True:
print(x, harm_sum(x))
x += 1
尽管有递归限制,我希望程序继续运行有没有办法做到这一点?
【问题讨论】:
-
这是在请求段错误。
-
尝试将尾递归重写为循环。
-
无限?不可以。其他语言可以优化无限递归(如果程序员正确地做到了),但 Python 不能。
-
@mypetlion python 不优化尾调用,但我认为原则上没有任何理由不能这样做。
标签: python python-3.x