"return self.shell.write(s, self.tags)"错误消息在 python 中是什么意思?



我打算使用递归而不是for循环来打印出一些数字(除了四处玩耍之外,没有任何原因),所以我来到了这个代码,当我实现它时,它可以完美地适用于I的所有值,直到980,它正确地实现了代码,但在实现结束后,它会给出

Traceback
(很多东西)

文件"C:\Python34\lib\idlelib\PyShell.py",第1342行,正在写入return self.shell.write(s,self.tags)

RuntimeError:调用Python对象时超过了最大递归深度

此外,对于i大于980的值,它不会打印所有值,它只打印前980个循环,然后崩溃,给出相同的消息。

我怀疑这与实现所需的空间和时间有关,与python的工作结构有关,而不是与代码错误有关,但我既不是python专家,也不是编程专家,所以我想了解为什么会发生这种情况?

def cout(i):
if i==0:
print(0)
else:
print(i)
i-=1
cout(i)

这不是@Some_programer_dude提到的堆栈溢出,而是避免堆栈溢出的安全措施。您可以使用sys.setrecursionlimit更改递归限制,但这样做是危险的——标准限制有点保守,但Python堆栈框架可能相当大。

您应该在不递归的情况下重写算法。正如你可能知道的,每一个递归算法都可以转换成一个等价的迭代算法。

最新更新