在尝试循环遍历数组时,我遇到了很多问题。
所以我循环遍历数组(区域* 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);
}
}
任何帮助或正确方向上的一点都会有所帮助。
答案 0 :(得分:0)
你需要了解当你使用递归函数时会发生什么,一个函数存在于堆栈中,直到它返回一个值,当你使用递归函数时,你反复调用相同的函数,但你在每个函数内都这样做,这意味着你将堆栈浮动到一个你可能无法从操作系统获得的大小,在你的情况下很简单我建议删除递归并在一个循环中使用它,你可以使用, 画布[x] [y] = 1; 如果(...){ 打破; } 其他{ 回报bla bla }
在原始循环中。