我的程序按预期解决了数独谜题,但 returns 未定义
My program solves sudoku puzzles as expected but returns undefined
当我 console.log
最后一个棋盘时,我的数独解算器似乎可以工作,但当我 return 那个棋盘时,求解函数实际上 returns undefined
。
我想将此程序添加到 Web 应用程序,因此我需要能够 return 一个值,而不仅仅是将答案打印到控制台。
这是主要功能“解决”
// Grid -> Grid or false (unsolvaable)
// Assume grid is valid
function solve(grid){
if (isFull(grid)){
console.log(grid)
return grid
}
let nextGridArray = nextGrids(grid)
if (nextGridArray.length < 1){
return false
}
for (let grid of nextGridArray) {
solve(grid)
}
}
如果函数在没有 returning 的情况下传递了两个 if
语句,它不会 return 任何显式的,这意味着它隐式 returned undefined
.在for循环中,如果对solve
的调用成功,你应该return它:
// Grid -> Grid or false (unsolvaable)
// Assume grid is valid
function solve(grid){
if (isFull(grid)){
console.log(grid)
return grid
}
let nextGridArray = nextGrids(grid)
for (let grid of nextGridArray) {
let solved = solve(grid);
if (solved) {
return solved; // Here!
}
}
return false;
}
当我 console.log
最后一个棋盘时,我的数独解算器似乎可以工作,但当我 return 那个棋盘时,求解函数实际上 returns undefined
。
我想将此程序添加到 Web 应用程序,因此我需要能够 return 一个值,而不仅仅是将答案打印到控制台。
这是主要功能“解决”
// Grid -> Grid or false (unsolvaable)
// Assume grid is valid
function solve(grid){
if (isFull(grid)){
console.log(grid)
return grid
}
let nextGridArray = nextGrids(grid)
if (nextGridArray.length < 1){
return false
}
for (let grid of nextGridArray) {
solve(grid)
}
}
如果函数在没有 returning 的情况下传递了两个 if
语句,它不会 return 任何显式的,这意味着它隐式 returned undefined
.在for循环中,如果对solve
的调用成功,你应该return它:
// Grid -> Grid or false (unsolvaable)
// Assume grid is valid
function solve(grid){
if (isFull(grid)){
console.log(grid)
return grid
}
let nextGridArray = nextGrids(grid)
for (let grid of nextGridArray) {
let solved = solve(grid);
if (solved) {
return solved; // Here!
}
}
return false;
}