我目前使用的代码是:
def f():
try:
f()
except RecursionError:
f()
try:
f()
except RecursionError:
f()
这会立即导致栈溢出,然而我在想是否有一种更Pythonic的简单方法来做到这一点。
我目前使用的代码是:
def f():
try:
f()
except RecursionError:
f()
try:
f()
except RecursionError:
f()
这会立即导致栈溢出,然而我在想是否有一种更Pythonic的简单方法来做到这一点。
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))
Python的默认递归限制是10 ** 4。您可以使用setrecursionlimit()更改它,因此,当Ackermann函数的输出过长时,您可能会遇到“堆栈溢出”错误。