エラー辞典

RecursionError

関数が自分自身を呼び出す「再帰」が深くなりすぎたときに発生するエラーです。

原因

再帰関数に終了条件(ベースケース)がない、または誤っていることが原因です。

エラーになるコード例

def countdown(n):
    print(n)
    countdown(n - 1)

countdown(5)
RecursionError: maximum recursion depth exceeded

修正版

def countdown(n):
    if n <= 0:
        print('終了')
        return
    print(n)
    countdown(n - 1)

countdown(5)

よくある間違い

  • 再帰関数に終了条件(if文でreturnする条件)を書き忘れる
  • 終了条件はあるが、再帰のたびに値が終了条件へ近づいていない

← エラー辞典に戻る