這段代碼我寫了很大的作品,直到一定的輸入大小。如果輸入變得太大,我得到一個「java.lang.StackOverflowError」。我已經閱讀了關於這個主題的一些其他關於計算器的條目,我想我的遞歸中有一個錯誤 - 但我找不到它。 下面是代碼:Java Stackoverflow錯誤遞歸
public int partition(int[] A, int l, int r, int x){
int i = l-1;
int j = r;
int exchange;
while(i <= j){
while(A[i] > x){
i++;
}
while(j >= i && A[j] <= x){
j--;
}
if(i < j){
exchange = A[i];
A[i] = A[j];
A[j] = exchange;
}
}
if(A[i] < A[r]){
exchange = A[i];
A[i] = A[r];
A[r] = exchange;
}
return i;
}
public void quicksort(int[] A, int l, int r){
int pivot = 0;
int x = 0;
if(l < r){
x = A[r];
pivot = partition(A, l, r, x);
quicksort(A, l, pivot-1);
quicksort(A, pivot+1, r);
}
}
輸入必須有多大來獲得一個計算器? – placeybordeaux 2013-05-11 15:52:58
你是誰發佈這個問題的同一個人:http://stackoverflow.com/questions/16496233/recursive-parameters-for-quicksort#comment23678710_16496233 ..你不應該嘗試做你自己的作業嗎? – 2013-05-11 15:55:01
當你在調試器中遍歷代碼時,你會看到什麼?如果你的代碼中有一個bug,你的調試器是你應該嘗試的第一件事。 – 2013-05-11 15:57:12