C++ 递归地寻找穿过迷宫的路径

1 c++ recursion

我已经努力解决这个问题几个小时了。我希望使用递归函数来解决用户输入给出的迷宫。迷宫的结构如下所示:

##########          
#  ###   #
#  #     #
#        #
#    o   #
#        #
##########   

        bool searchMaze(int currR, int currC)
        if (currR > (rows-1) || currC > (columns-1) || currR < 0 || currC < 0)
            return false;
        if (maze[currR][currC] == "o")
            return true;
        if (maze[currR][currC] == "#")
            return false;
        maze[currR][currC] = "+";

        if (searchMaze((currR - 1), currC) == true)
        {
            return true;
        }
        if (searchMaze(currR, (currC + 1)) == true)
        {
            return true;
        }

        if (searchMaze((currR + 1), currC) == true)
        {
            return true;
        }
        if (searchMaze(currR, (currC - 1)) == true)
        {
            return true;
        }
        maze[currR][currC] = " ";
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

这是我上面的递归方法,“o”标记了一个解决方案。每次运行该程序时,我都会面临无限递归并收到错误

“在projectName.exe中的0x002396DA处抛出异常:0xC0000005:访问冲突写入位置0x000A0FFC”和“在projectName.exe中的0x002396DA处发生未处理的异常:0xC0000005:访问冲突写入位置0x000A0FFC”。

Gya*_*ain 5

添加缺失的案例:

if (maze[currR][currC] == "+")
    return false;  // Already visited
Run Code Online (Sandbox Code Playgroud)

您正在追踪已经访问过的踪迹,并且没有使用'+'您追踪的标记,从而导致无限递归并且迭代不收敛。