sha*_*hon 8 python stack-overflow
我目前使用这段代码:
def f():
try:
f()
except RecursionError:
f()
try:
f()
except RecursionError:
f()
Run Code Online (Sandbox Code Playgroud)
这会立即导致致命的堆栈溢出。然而,我想知道是否有一种更简单、更Pythonic 的方法可以做到这一点。
小智 3
import sys
sys.setrecursionlimit(10**8)
def ackermann(m,n):
if m == 0:
return (n + 1)
elif n == 0:
return ackermann(m - 1, 1)
else:
return ackermann(m - 1, ackermann(m, n - 1))
for x in range(5):
for y in range(5):
print(ackermann(x, y))
Run Code Online (Sandbox Code Playgroud)
Python默认的递归限制是10**4。可使用 setrecursionlimit() 进行更改,这样您可能会收到“堆栈溢出”错误,因为 Ackermann 函数的输出太长。
| 归档时间: |
|
| 查看次数: |
12498 次 |
| 最近记录: |