【发布时间】:2015-09-10 22:18:38
【问题描述】:
我在尝试循环遍历数组时遇到了很多问题。
所以我循环遍历一个数组(面积 * 2)次。我的意思是,如果我有一个 100x100 数组,我将循环遍历它 20,000 次(100 * 100 * 2)。 在循环中,如果它找到一个不等于 1 的值,则将其赋值为 1。 我已经完成了所有这些工作,但由于 StackOverflow,Eclipse 不会让我运行它。
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 中的堆栈非常小(如果我没记错的话,在 5 000 到 7 000 次递归调用之间)
-
你有循环依赖。
-
有没有办法解决这个问题?
-
@HovercraftFullOfEels 递归是使用...堆栈实现的。你的意思是使用迭代?这就是我昨天建议的解决方案。 (这个问题是 OP 原始问题的略微修改的副本)对不起,伙计,但我将不得不投票结束。由于您似乎仍在苦苦挣扎,我将尝试更详细地解决您的问题。