- ベストアンサー
クイックソートのプログラム
クイックソートのプログラムを作ったのですが、 コンパイルは通っても実行で乱数を取得して、取得した乱数を表示し、 Exception in thread "main" java.lang.StackOverflowError というエラーが出てしまいます。 このエラーはどういう意味ですか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
メソッド呼び出しの階層が深すぎる時に出るエラーです。 数千の階層まで大丈夫なので、通常は発生しないです。 再帰処理の終了条件にバグがあるか、メソッド呼び出しがループになっているかのどちらかです。 スタックトレースで繰り返し呼び出されているメソッドがありませんか? <例1>間違えて自分自身を呼び出している or 再帰処理でバグがある public long method(long l) { l++; return method(l); } <例2>複数のメソッドが交互に呼び合って無限ループになっている public String methodA() { // 何か処理 methodB(); // 何か処理 } public String methodB() { // 何か処理 methodA(); // 何か処理 }
その他の回答 (1)
- kokorone
- ベストアンサー率38% (417/1093)
回答No.1
プログラムを提示していただければ、明確な 回答がわかりますが、 mainというスレッドまたはファンクションで 例外が発生しています。 例外の種別としては、内部変数特に配列で 定義された領域を超えてアクセスしてしま っています。 配列の添え字(インデックス)が定義数を 超えて使用していませんか?
質問者
お礼
ありがとうございます。 配列の範囲が間違ってました。
お礼
ありがとうございます。 再帰処理を複数定義し、 配列の範囲を引数にしていたんですが、 その範囲が重なってたみたいです。