递归地通过迷宫c ++找到路径

时间:2018-02-12 05:09:15

标签: c++ recursion

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

....\lua\jit\bcsave.lua

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

  

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

2 个答案:

答案 0 :(得分:4)

添加缺少的案例:

if (maze[currR][currC] == "+")
    return false;  // Already visited

您正在追溯已经访问过的路径,并且不使用由您跟踪的'+'标记导致无限递归,并且迭代不会收敛。

答案 1 :(得分:1)

你从未检查过你是否正在寻找之前已经探索过的地方。您将当前路径设置为“+”,但您从未在函数中实际检查过它。如果当前位置标记为“+”,则添加if语句以使函数不递归。

顺便说一句,你可以通过在回溯时不将路径设置回“”来加速你的算法,这样一旦探索了一个位置,你就不会再回到它了。这是有效的,因为它来自哪里并不重要,只有从那个位置开始有路径才有意义。