正在获取ackermann函数的TypeError.不知道为什么


def ackermann(m, n):
if m == 0:
return n+1
if n == 0:
return (m-1,1)
else:
return ackermann(m-1,ackermann(m,n-1))
ackermann(10,5)

获取类型错误:

Traceback (most recent call last):
File "main.py", line 11, in <module>
print(ackermann(3,4))
File "main.py", line 9, in ackermann
return ackermann(m-1,ackermann(m,n-1))
File "main.py", line 9, in ackermann
return ackermann(m-1,ackermann(m,n-1))
File "main.py", line 9, in ackermann
return ackermann(m-1,ackermann(m,n-1))
[Previous line repeated 2 more times]
TypeError: unsupported operand type(s) for -: 'tuple' and 'int'

我试图在pythontutor.com上可视化这一点,一旦m是9,n就返回元组(9,1(,错误就开始了。

n0时,返回元组而不是调用ackermann:

def ackermann(m, n):
if m == 0:
return n+1
if n == 0:
return ackermann(m-1,1)
# Here-^
else:
return ackermann(m-1,ackermann(m,n-1))

相关内容

最新更新