Javascript рекурсия не работает - PullRequest
1 голос
/ 11 октября 2011

Я создаю минный тральщик jquery и в настоящее время работаю над функцией раскрытия, когда вы щелкаете блок с 0 смежными минами.Предполагаемый результат состоит в том, чтобы просмотреть все 8 смежных блоков, чтобы показать эти блоки, если они также являются блоками '0', то для этого блока это повторяется:

function reveal(block) {
    block.removeClass('hide');
    var thex = getXY(block)[0];
    var they = getXY(block)[1];
    if (blockNumber(block) == '0') {
        alert('test');
        --they;
        --thex;
        var nearmines = 0;
        for (mody=0;mody<3;mody++){
            for (modx=0;modx<3;modx++){
                var newx = thex + modx;
                var newy = they + mody;
                reveal(bl(newx,newy));
            }
        }
    }
}

В настоящее время эта функция останавливается после проверки первого блока каждый раз, когда функция повторяется.Кажется, что звонок прерывает for loops.

1 Ответ

1 голос
/ 11 октября 2011

Я почти уверен, что у вас бесконечная рекурсия - прямо или косвенно. Вызов reveal(bl(2,2)) вызовет reveal(bl(2,2)) в цикле. Кроме того, если bl(1,2) также равно 0, он также вызовет reveal(bl(2,2)) при поиске каждого соседа.

Вы должны проверить «базовый регистр» в первой строке:

if(!block.hasClass('hide'))
    return;
...