Javascript 为什么可以';我从递归函数返回吗?
好的,第一个帖子在这里。我不知所措,非常感谢您的帮助 我有一个递归函数,在我尝试并从中返回之前,它似乎工作正常。(只是一个有趣的小迷宫跑步者) 当到达return语句时,它似乎返回到Javascript 为什么可以';我从递归函数返回吗?,javascript,recursion,return,Javascript,Recursion,Return,好的,第一个帖子在这里。我不知所措,非常感谢您的帮助 我有一个递归函数,在我尝试并从中返回之前,它似乎工作正常。(只是一个有趣的小迷宫跑步者) 当到达return语句时,它似乎返回到if(grid[y+1][x]==2)语句。 然后,我看不到函数再次被调用,但是y和x的值开始改变,因为它在函数周围循环,然后到达底部的else并返回那里 我还在控制台中看到“inside return if”,在浏览器中设置断点表明调用了return语句,只是没有退出函数 非常感谢 const grid =[0,0
if(grid[y+1][x]==2)
语句。然后,我看不到函数再次被调用,但是
y
和x
的值开始改变,因为它在函数周围循环,然后到达底部的else
并返回那里
我还在控制台中看到“inside return if”,在浏览器中设置断点表明调用了return语句,只是没有退出函数
非常感谢
const grid =[0,0,0,0,3,2],
[0,0,0,0,3,0],
[0,0,0,0,3,0],
[3,3,3,3,3,0],
[0,0,0,0,0,0],
[1,3,3,3,3,3]
],
const recursiveSearch = (y, x) => { // init values y=5 x=0
console.log(y + ' ' + x);
if(grid[y-1]){
if(grid[y-1][x] === 0) {
grid[y-1][x] = 4;
recursiveSearch(y-1, x);
}
if(grid[y-1][x] === 2) {
console.log('inside return if');
return 'end point found at';
}
}
if(grid[y][x+1] || grid[y][x+1] === 0) {
if(grid[y][x+1] === 0) {
grid[y][x+1] = 4;
recursiveSearch(y,x+1);
}
if(grid[y][x+1] === 2) {
return "end point found at";
}
}
if(grid[y+1] || grid[y+1] === 0) {
if(grid[y+1][x] === 0) {
grid[y+1][x] = 4;
recursiveSearch(y+1,x);
}
if(grid[y+1][x] === 2) {
return "end point found at";
}
}
if(grid[y][x-1] || grid[y][x-1] === 0 ) {
if(grid[y][x-1] === 0) {
grid[y][x-1] = 4;
recursiveSearch(y,x-1);
};
if(grid[y][x-1] === 2) {
return "end point found at";
}
} else {
return "No solution found"
}
};
必须返回调用递归函数的值
const grid=[0,0,0,0,3,2],
[0,0,0,0,3,0],
[0,0,0,0,3,0],
[3,3,3,3,3,0],
[0,0,0,0,0,0],
[1,3,3,3,3,3]
],
const recursiveSearch=(y,x)=>{//init values y=5 x=0
控制台日志(y+“”+x);
if(网格[y-1]){
if(网格[y-1][x]==0){
网格[y-1][x]=4;
return recursiveSearch(y-1,x);//必须返回调用recursiveSearch的值
}
if(网格[y-1][x]==2){
console.log('内部返回if');
返回“在处找到端点”;
}
}
如果(栅格[y][x+1]| |栅格[y][x+1]==0){
如果(网格[y][x+1]==0){
网格[y][x+1]=4;
return recursiveSearch(y,x+1);///必须返回调用recursiveSearch的值
}
如果(网格[y][x+1]==2){
返回“在处找到终点”;
}
}
如果(栅格[y+1]| |栅格[y+1]==0){
如果(网格[y+1][x]==0){
网格[y+1][x]=4;
return recursiveSearch(y+1,x);//必须返回调用recursiveSearch的值
}
如果(网格[y+1][x]==2){
返回“在处找到终点”;
}
}
if(网格[y][x-1]| |网格[y][x-1]==0){
if(网格[y][x-1]==0){
网格[y][x-1]=4;
return recursiveSearch(y,x-1);//必须返回调用recursiveSearch的值
};
if(网格[y][x-1]==2){
返回“在处找到终点”;
}
}否则{
返回“未找到解决方案”
}
};
请为每个递归调用添加return语句。当您递归调用recursiveSearch
时,您没有返回任何内容。请解释一下为什么这会解决问题,这将是一个很好的答案。