Ackermann的功能已经尝试通过以下代码实现
def A(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 1:
A(m - 1, 1)
elif m > 0 and n > 0:
A(m - 1, A(m, n - 1))
print A(4, 5)
答案 0 :(得分:7)
您的函数不会为if
语句的3个分支中的2个返回任何内容;只有m == 0
明确返回一个值。
您还需要返回递归调用的结果:
def A(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 1:
return A(m - 1, 1)
elif m > 0 and n > 0:
return A(m - 1, A(m, n - 1))
如果没有显式返回,则函数以默认返回值None
结束。