Рекурсивная ошибка Floodfill в Javascript - не продолжает повторяться? - PullRequest
1 голос
/ 27 марта 2019

Я новичок в использовании Javascript и пытаюсь кодировать в нем алгоритм типа залива (впервые используя библиотеку p5js).Это мой первый раз с рекурсией в Javascript.

В прошлом я реализовал заливку в python, и это работало нормально.Я подумал, что мог бы использовать тот же код, но изменить синтаксис, но он не работает для меня.

Он начинает заполняться вокруг препятствий, но затем останавливается посередине, и я не могу понять, почему

function generatePaths(board, row, col, depth=0){
    //print(board[row][col][1]);
    if ((row<0) || (row>100) || (col<0) || (col>100)){
        return;
    }
    if (board[row][col][0]!=0){
        return;
    }
    if (board[row][col][1]>0) {
        return;
    }
    if (board[row][col][0] == 0){
        board[row][col][0] = 2;
        board[row][col][1] = depth;
    }
    generatePaths(board, row+1,col, depth+1);
    generatePaths(board, row-1,col, depth+1);
    generatePaths(board, row,col-1, depth+1);
    generatePaths(board, row,col-1, depth+1);
}

Я думаю, что переменные row и col, вероятно, говорят сами за себя.Третий индекс представляет значение и глубину рекурсии.Изначально у меня не было значения глубины, но я волновался, что это может быть проблемой, поэтому я добавил его (ничего не изменилось)

Я хочу заменить всю пустую доску [row] [col][0] значения с 2 с.Они пусты, если в данный момент там 0.Я получаю сообщение об ошибке при первом рекурсивном вызове

Возможно, я совершаю глупую ошибку, но не могу найти ее, если это так!Я не понимаю, что происходит с этой ошибкой, помощь приветствуется !!

Вот изображение того, что он делает.Я не знаю, почему это просто останавливается.

введите описание изображения здесь

...