java - 迷宫算法 KINDA 有效。一些迷宫,不是所有的帮助

标签 java recursion solver maze

我使用的迷宫算法有时有效,但并非始终有效。它使用递归,但我不明白为什么它不总是这样。

public boolean findPath(int x, int y) {
    myArray[x][y] = "T";    // marks coordinate T for traveled
    printMaze();  // prints the current state of the maze

    if (x == finish[0] && y == finish[1]) { // base case: if at finish, solved.
        isFinish = true;
        return isFinish;
    } else {
        isFinish = false;                   // not at finish
        for (int i = -1; i <= 1; i++) {
            for (int j = -1; j <= 1; j++) {
                if (i * j == 0 && i != j && canIGoHere(x+i, y+j) && !isFinish) {
                    isFinish = findPath(x + i, y + j);
                }
            }
        }
        return isFinish;
    }
}

最佳答案

我认为函数应该在 isFinish 为真时立即返回。就像现在一样,该函数可能会找到结束位置,但它会继续循环并可能会在返回之前离开该位置。

关于java - 迷宫算法 KINDA 有效。一些迷宫,不是所有的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7523124/

相关文章:

c - 用 C 求解矩阵(在 CUDA 中)

用于未定方程系统的 C++ 库

java - 条件运算符和 if-else 的工作方式不同吗?

php - 循环多维数组以输出 uniq 数字的列表

constraints - Jacop,约束求解器

python - 编写相同的 n 层嵌套循环

c - 如何使用函数递归执行 strlen?

java - 如何使用 apache poi 从 ppt、pptx 文件中提取除页脚、幻灯片编号之外的文本?

java - 如何获取资源文件列表?

java - 我们可以使用 Apache 为 Java 应用程序服务器提供 HTTP/2 连接吗?