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);
}