gpt4 book ai didi

javascript - 递归函数(迷宫求解器)-找不到错误;(((

转载 作者:行者123 更新时间:2023-12-03 11:54:54 24 4
gpt4 key购买 nike

我正在学习 javascript,除了递归函数之类的一些东西之外,一切对我来说都很容易。我确实理解它们的工作方式,但在处理示例时,我意识到我无法捕获阻止其运行的错误...

我下面有一个数组( map )(0是一个封闭的单元格,1表示路径是开放的),我试图使用递归函数从左上角“找到”走出这个“迷宫”的路径单元格到右下角的单元格。基本上只是让函数“找到”这条 1 的路径。但失败了;(

var map = [
[1,1,0,0],
[0,1,1,0],
[0,0,1,0],
[0,0,1,1]
]

function findpath(x,y) {
if (x<0 || x>3 || y<0 || y>3) return false; //if it is outside of map
if (x==3 && y==3) return true; // if it is the goal (exit point)
if (map[y][x]==0) return false; //it is not open
map[y][x]=9; //here marking x,y position as part of solution path outlined by "9"
if (findpath(x,y-1) == true) return true;
if (findpath(x+1,y) == true) return true;
if (findpath(x,y+1) == true) return true;
if (findpath(x-1,y) == true) return true;
map[y][x]=8; //unmark x,y as part of solution path outlined by "8"
return false;
};
findpath(0,0);

最佳答案

“失败”的描述很少(如果有的话)是有用的错误报告。

为了让别人帮助您,他们需要比这更多的细节。

在本例中,导入详细信息来自 JavaScript 错误控制台。您应该始终在您的问题中包含任何错误消息。

但是,由于您的代码非常短,我可以将其剪切并粘贴到我的控制台中,并在其中收到消息:

RangeError: Maximum call stack size exceeded

这意味着您的函数递归得太深。你要么

  • 您的谜题逻辑不佳,并且您会一遍又一遍地递归到相同的值
  • 这个谜题太复杂了,你无法像这样递归地解决它。

您需要添加 console.log 语句并观察代码正在做什么,并了解为什么它会如此深入。

如果是逻辑错误,请修复逻辑错误。 (提示:我很确定是这样的——你从来没有在 map 上标记过你去过的地方,所以它会在同一个地点自由地来回移动)。

如果不是,那么您需要使用一些更高级的技巧来解决递归问题,例如使用生成器函数并将您所做的更改单独存储在 map 中。

关于javascript - 递归函数(迷宫求解器)-找不到错误;(((,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com