-1
我在嘗試遍歷數組時遇到了很多運行到遞歸函數的問題。通過數組循環的遞歸函數
所以我正在循環一個數組(區域* 2)次。我的意思是,如果我有一個100x100陣列,我正在循環20000次(100 * 100 * 2)。 在循環中,如果它找到一個不等於1的值,它會將其分配給一個值。 我有所有的工作,但Eclipse不會讓我運行它由於StackOverflow。
public static void checkPos() {
while(canrun) {
if(x < Canvas.length - 1) {
x++;
} else {
x = 0;
if(y < Canvas.length - 1) {
y++;
} else {
y = 0;
}
}
if(Canvas[x][y] != 0) {
filled++;
Assign(x, y);
break;
}
}
}
public static void Assign(int x, int y) {
Canvas[x][y] = 1;
if(filled < spots) {//ERROR POINTING HERE
checkPos();
} else {
printObj();
System.exit(0);
}
}
任何幫助或在正確的方向點將有所幫助。
解決方案:不要使用遞歸。而是使用堆棧。 –
Java中的堆棧非常小(如果我的內存正確,在5000到7 000次遞歸調用之間) – Dici
您有循環依賴關係。 –