本文へスキップ
BecomeCoder

Javaのエラー · エラー8

StackOverflowError ― 呼び出しが積み上がりすぎた(実行時)

メソッドが止まらず自分自身を呼び続ける(無限再帰)と、呼び出しを積んでおくメモリ領域(スタック)が溢れて出ます。

出るコード

static int countdown(int n) {
    return countdown(n - 1);   // 終了条件が無い
}

エラーメッセージ

Exception in thread "main" java.lang.StackOverflowError

直し方

再帰には必ず 止まる条件(ベースケース) を用意します。

static int countdown(int n) {
    if (n <= 0) return 0;
    return countdown(n - 1);
}