Хорошо Stackoverflow первый пост здесь.Я в растерянности и буду признателен за любую помощь.
У меня есть рекурсивная функция, которая работает нормально, пока я не попытаюсь вернуться из нее.(Просто маленький лабиринт для развлечения)
При достижении оператора return кажется, что он возвращается к оператору if(grid[y+1][x] ===2)
.
Тогда я не вижу, чтобы функция снова вызывалась, но значениядля y
и x
начните изменяться, поскольку она зацикливается вокруг функции, прежде чем добраться до else
внизу и вернуться туда.
Я также вижу «внутри return if 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"
}
};