1 回答

TA貢獻1891條經驗 獲得超3個贊
如果您在函數(shù)內使用 for 循環(huán),var
將創(chuàng)建一個局部變量,“no var”將查找作用域鏈,直到找到該變量或到達全局作用域。這意味著您需要var
在 for 循環(huán)內創(chuàng)建變量時聲明 ,以避免一個循環(huán)與另一個循環(huán)混淆。
所以你的代碼應該是這樣的:
function possible(board, y, x, n) {
? ? for (var i = 0; i < 9; i++) {
? ? ? ? if (board[y][i] === n) {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? if (board[i][x] === n) {
? ? ? ? ? ? return false;
? ? ? ? }
? ? }
? ? y0 = Math.floor(y / 3) * 3;
??
? ? x0 = Math.floor(x / 3) * 3;
? ? for (var i = 0; i < 3; i++) {
? ? ? ? for (var j = 0; j < 3; j++) {
? ? ? ? ? ? if (board[y0+i][x0+j] === n) {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return true;
}
function solver(board) {
? ? for (var y = 0; y < 9; y++) {
? ? ? ? for (var x = 0; x < 9; x++) {
? ? ? ? ? ? if (board[y][x] === 0) {
? ? ? ? ? ? ? ? for (var n = 1; n < 10; n++) {
? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? if (possible(board, y, x, n)) {
? ? ? ? ? ? ? ? ? ? ? ? board[y][x] = n;
? ? ? ? ? ? ? ? ? ? ? ? solver(board);
? ? ? ? ? ? ? ? ? ? ? ? board[y][x] = 0;?
? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? return
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? console.log(board);
}
添加回答
舉報