只是出于好奇,我决定举一个递归函数的例子。所以,我有这个递归函数(阿克曼函数):
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))
如您所见,我尝试计算阿克曼值直到 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)?