迷宫求解器陷入循环(堆栈溢出错误)

Maze solver gets stuck in a loop (Stack overflow error)

我的递归求解器卡在了死胡同,无法回头,导致堆栈溢出错误。我哪里错了?

solI 是一个 public 数组。 x2y2 是 public 解坐标。

0-wall
1-open path
2-tried
3-solution

递归求解器

public static boolean traverse(int x1, int y1) {
    boolean done = false;
    count++;
    if ((count < 100) && (x1 >= 0) && (x1 < solI.length) && (y1 >= 0) && (y1 < solI.length) && (solI[x1][y1] == 1)) {
        solI[x1][x1] = 2;
        if ((x1 == x2) && (y1 == y2)) {
            done = true;
        } else {
            if (!done) { //up
                done = traverse(x1 - 1, y1);
            }
            if (!done) {//left{
                done = traverse(x1, y1 - 1);
            }
            if (!done) {//down{
                done = traverse(x1 + 1, y1);
            }
            if (!done) {//right
                done = traverse(x1, y1 + 1);
            }
        }
        if (done) solI[x1][y1] = 3;

    }
    return done;
}

问题出在您代码的第 5 行。这个solI[x1][x1] = 2;应该改成这个solI[x1][y1] = 2;。也忘了 countmax count = 100 会导致维度超过 10 * 10.

的矩阵出现问题