递归函数循环数组

时间:2015-09-10 22:18:38

标签: java arrays recursion

在尝试循环遍历数组时,我遇到了很多问题。

所以我循环遍历数组(区域* 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);
    }
}

任何帮助或正确方向上的一点都会有所帮助。

1 个答案:

答案 0 :(得分:0)

你需要了解当你使用递归函数时会发生什么,一个函数存在于堆栈中,直到它返回一个值,当你使用递归函数时,你反复调用相同的函数,但你在每个函数内都这样做,这意味着你将堆栈浮动到一个你可能无法从操作系统获得的大小,在你的情况下很简单我建议删除递归并在一个循环中使用它,你可以使用,     画布[x] [y] = 1;     如果(...){         打破;     }     其他{         回报bla bla     }

在原始循环中。