本文へスキップ
BecomeCoder

C#のエラー · エラー12

StackOverflowException ― 再帰が終わらない(実行時)

再帰呼び出しに終了条件(ベースケース)が無いと、呼び出しスタックを使い果たしてクラッシュします。この例外は try-catch で捕まえられず、プロセスごと強制終了します。

出るコード

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

エラーメッセージ

Process is terminated due to StackOverflowException.

直し方

再帰には必ず終了条件を書きます(if (n <= 1) return 1;)。深い再帰が想定されるならループに書き換えることも検討します。