當我處理Ackermann function:爲什麼參數類型由不同的比較運算符改變?
def ackermann(m,n):
if m == 0:
return n + 1
if m > 0 and n == 0:
return ackermann(m-1,1)
elif m > 0 and n > 0:
return ackermann(m-1,ackermann(m,n-1))
我寫錯運營商在第二if
聲明:
if m == 0 and n == 0:
return ackermann(m-1,1)
但我得到了一個錯誤:
File "C:/Users/jacob/Desktop/think python/exercise 6-2.py", line 15, in ackermann
return ackermann(m-1,ackermann(m,n-1))
File "C:/Users/jacob/Desktop/think python/exercise 6-2.py", line 14, in ackermann
elif int(m) > 0 and int(n) > 0:
TypeError: unorderable types: NoneType() > int()
爲什麼參數類型的改變運營商?
您包含的代碼與此錯誤消息不符。你如何調用你的功能? – jtbandes
你見過這個:http://www.greenteapress.com/thinkpython/code/ackermann.py –
可能你沒有覆蓋所有的條件,並且函數在你的遞歸中隱式地返回一個None。 – DaveQ