Cof*_*ker 3 python recursion infinite
因此,当玩弄Python时,我注意到程序的堆栈大小基本上没有限制(在数字上继续执行电源操作,即使在达到数千个数字后,精度也保持完美).这让我想知道:如果我不小心进入Python的无限递归循环怎么办?编译器会注意到并抛出堆栈溢出错误吗?或者程序会崩溃吗?我的CPU会燃烧吗?老实说,这不是我渴望测试自己的东西.
我保证,由于用户代码,没有现代计算机会燃烧.亲自尝试一下:
def recurseInfinitely( n ):
recurseInfinitely(n+1)
recurseInfinitely(0)
Run Code Online (Sandbox Code Playgroud)
运行此程序会立即生成输出:
[...]
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
Run Code Online (Sandbox Code Playgroud)
您可以捕获错误并检查以下值n:
def recurseInfinitely( n ):
try:
recurseInfinitely(n+1)
except RuntimeError:
print "We got to level %s before hitting the recursion limit."%n
Run Code Online (Sandbox Code Playgroud)
得到:
在达到递归限制之前,我们达到了997级.
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |