私は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