出于好奇,我决定举一个递归函数的例子。 所以, 我有这个递归函数(阿克曼函数):
def ack(a, b):
if a == 0:
return b + 1
elif b == 0:
return ack(a - 1, 1)
else:
return ack(a - 1, ack(a, b - 1))
for i in range(5):
for j in range(5):
print("ack(", i, ",", j, ")", "=", ack(i, j))
如您所见,我尝试计算Ackermann值,直到ack(5,5)。
但是在打印到ack(4,0)之后,出现以下错误:
RecursionError: maximum recursion depth exceeded in comparison
因此,我尝试将递归限制提高到一个特别高的值,如下所示:
import sys
sys.setrecursionlimit(30000)
但是现在我得到的值直到ack(4,0)内核死了。
ack( 0 , 0 ) = 1
ack( 0 , 1 ) = 2
ack( 0 , 2 ) = 3
ack( 0 , 3 ) = 4
...
ack( 4 , 0 ) = 13
Kernel died, restarting
如何在python中计算比ack(4,0)高的值? 编辑:刚意识到值ack(4,2)在当今世界中几乎是不可争议的。那么,我该如何计算ack(4,1)?