JS递归错误-RangeError:超出最大调用堆栈大小

时间:2019-04-04 00:06:32

标签: javascript recursion

RangeError:超出最大调用堆栈大小 我在此递归块上遇到了麻烦,并且 我对这个概念没有经验。下面是一些示例代码, 这两个函数超出了最大堆栈调用的大小。

validMove(player, dr, dc, r, c, tempBoard) {
    let opposite;
    if (player == 1) {
        opposite = 2;
    } else if (player == 2) {
        opposite = 1;
    } else {
        //console.log('color error: ' + player);
        return false;
    }

    if (r + dr < 0 || r + dr > 7) {
        return false;
    }
    if (c + dc < 0 || c + dc > 7) {
        return false;
    }
    if (tempBoard[r + dr][c + dc].state != opposite) {
        return false;
    }
    if (r + dr + dr < 0 || r + dr + dr > 7) {
        return false;
    }
    if (c + dc + dc < 0 || c + dc + dc > 7) {
        return false;
    }
    return this.checkLineMatch(player, dr, dc, r + dr + dr, c + dc + dc, tempBoard);
}

checkLineMatch(player, dr, dc, r, c, tempBoard) {
    if (tempBoard[r][c].state == player) {
        return true;
    }
    if (tempBoard[r][c].state == 0) {
        return false;
    }
    if (r + dr < 0 || r + dr > 7) {
        return false;
    }
    if (c + dc < 0 || c + dc > 7) {
        return false;
    }
    return this.checkLineMatch(player, dr, dc, r + dr, c + dr, tempBoard);
}

0 个答案:

没有答案