引数m>=4
とn>=1
を持つ合計計算可能な再帰関数ackermann(m,n)
をpythonで最大再帰深度を超えないで計算することは可能ですか?最大反復深度を超えずに、Pythonでargs m> = 4およびn> = 1を持つ再帰的ackermann(m、n)関数を計算することは可能ですか?
def ackermann(m,n):
if m == 0:
return n+1
if n == 0:
return ackermann(m-1,1)
else:
return ackermann(m-1,ackermann(m,n-1))
ackermann(4,1)
ackermanは、原始的な再帰関数では定義できなかったことを大きく増やすものを意図的に定義しています。 –
Pythonは再帰には適していません。テールコールの消去はないため、常にスタックオーバーフローが発生しやすくなります。あなたは最大再帰深度を増やすことができますが、スタックオーバーフローを防ぐために* –
* ackermann(4,2)*は10進数で約2万桁です。 )の定義を文字通り。 – greybeard