【发布时间】:2021-04-04 16:19:36
【问题描述】:
我无法理解以下内容:
import sys
def f(n):
try:
print('try', n)
f(n + 1)
except:
print('except', n)
if n > 0:
raise
sys.setrecursionlimit(1000)
f(0)
它的输出是:
try 0
try 1
try 2
...
try 995
except 996
except 995
...
except 0
我知道try 块将迭代并打印n,直到满足系统递归限制,在这种情况下输入 except 块。我的问题是,在except 块中,为什么n 会减少,这里的递归发生在哪里?此外,为什么n 不能精确地满足递归限制?也就是为什么序列达不到try 1000?谢谢!
【问题讨论】: