メソッドが止まらず自分自身を呼び続ける(無限再帰)と、呼び出しを積んでおくメモリ領域(スタック)が溢れて出ます。
出るコード
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);
}