所以,当我玩弄python的时候,我注意到程序的堆栈大小基本上没有限制(一直对一个数字执行幂运算,甚至在达到数千位之后,精度仍然保持完美)。这让我不禁要问:如果我意外地进入了python中的无限递归循环呢?编译器会注意到并抛出堆栈溢出错误吗或者程序会崩溃?我的CPU会燃烧吗?老实说,这不是我急于测试自己的东西。
最佳答案
我保证,没有现代电脑会因为用户代码而燃烧。你自己试试吧:
def recurseInfinitely( n ):
recurseInfinitely(n+1)
recurseInfinitely(0)
立即运行此程序会产生以下输出:
[...]
recurseInfinitely(n+1)
File "so.py", line 2, in recurseInfinitely
recurseInfinitely(n+1)
File "so.py", line 2, in recurseInfinitely
recurseInfinitely(n+1)
RuntimeError: maximum recursion depth exceeded
您可以捕获错误并检查
n
的值:def recurseInfinitely( n ):
try:
recurseInfinitely(n+1)
except RuntimeError:
print "We got to level %s before hitting the recursion limit."%n
得到:
在达到递归极限之前,我们到达了997级。