我寫代碼below.but將打印此異常,我真的不知道什麼是它的問題,請幫我謝謝stackoverflowException
CODE:
private void fillMinAverageTime() { //T(n) = O(n^3)
for (int i = list.size() - 2; i >= 0; i--) {
for (int j = i + 1; j < list.size(); j++) {
for (k = i; k <= j; k++) {
minOne = fillMinAverageTimeArray(i, j);
if (min == 0.0) {
min = minOne;
} else if (minOne < min) {
min = minOne;
}
}
min = 0.0;
minOne = 0.0;
minAverageTimeArray[i][j] = min + probability[i][j];
}
}
}
private double fillMinAverageTimeArray(int i, int j) {
if (i > j) {
return 0.0;
}
if (i == j) {
return minAverageTimeArray[i][i];
}
System.out.println(k+","+j+","+i);//EDITED
**return (fillMinAverageTimeArray(i, k - 1) + fillMinAverageTimeArray(k + 1, j));**//the line tat throws this exception
}
例外:
at OBST.MemoizedVersion.fillMinAverageTimeArray(MemoizedVersion.java:118)
at OBST.MemoizedVersion.fillMinAverageTimeArray(MemoizedVersion.java:118)
at OBST.MemoizedVersion.fillMinAverageTimeArray(MemoizedVersion.java:118)
編輯:它將打印:
2,3,2
3,3,2
1,2,1
2,2,1
1,3,1
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
該方法中的「k」來自哪裏? – 2010-12-18 14:18:18
k是一個全局變量! – user472221 2010-12-18 14:45:17
請在打印出導致StackOverflowException的行上方的i,k,j處添加日誌消息。 – 2010-12-18 14:47:43