我尝试编写一个简单的程序,计算调和级数的总和,然后将结果打印出来。但是由于递归限制,程序无法继续执行。
以下是程序:
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
我希望程序能在递归限制的情况下继续运行,有什么办法可以实现吗?
我尝试编写一个简单的程序,计算调和级数的总和,然后将结果打印出来。但是由于递归限制,程序无法继续执行。
以下是程序:
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
我希望程序能在递归限制的情况下继续运行,有什么办法可以实现吗?
同时,请注意无法实现无限的栈大小:每个栈帧都占用内存;你最终会耗尽所有内存并使系统崩溃。
解决方法:如果你能够处理硬件故障,那么可以使用sys.setrecursionlimit
将其设置超出系统的物理限制(这取决于系统)。
真正的解决方法:如Juan所述,你可以将递归重写为循环。