我一直在努力解决这个问题几个小时。我希望使用递归函数来解决用户输入给出的迷宫。迷宫的结构如下:
....\lua\jit\bcsave.lua
这是我上面的递归方法,“o”标志着一个解决方案。每次我运行程序时,我都面临无限递归并得到错误
“projectName.exe中0x002396DA处抛出异常:0xC0000005:Access 违规写入位置0x000A0FFC“和”未处理的异常 projectName.exe中的0x002396DA:0xC0000005:访问冲突写入 位置0x000A0FFC。“
答案 0 :(得分:4)
添加缺少的案例:
if (maze[currR][currC] == "+")
return false; // Already visited
您正在追溯已经访问过的路径,并且不使用由您跟踪的'+'
标记导致无限递归,并且迭代不会收敛。
答案 1 :(得分:1)
你从未检查过你是否正在寻找之前已经探索过的地方。您将当前路径设置为“+”,但您从未在函数中实际检查过它。如果当前位置标记为“+”,则添加if语句以使函数不递归。
顺便说一句,你可以通过在回溯时不将路径设置回“”来加速你的算法,这样一旦探索了一个位置,你就不会再回到它了。这是有效的,因为它来自哪里并不重要,只有从那个位置开始有路径才有意义。