Javascript 为什么可以';我从递归函数返回吗?

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

好的,第一个帖子在这里。我不知所措,非常感谢您的帮助

我有一个递归函数,在我尝试并从中返回之前,它似乎工作正常。(只是一个有趣的小迷宫跑步者)

当到达return语句时,它似乎返回到
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
时,您没有返回任何内容。请解释一下为什么这会解决问题,这将是一个很好的答案。