问题描述
当我console.log
最终的木板时,我的数独求解器似乎可以工作,但是当我返回该木板时,solve函数实际上返回了undefined
。
我想将此程序添加到Web应用程序中,所以我需要能够返回一个值,而不仅仅是将答案打印到控制台。
这是主要功能“解决”
// 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)
}
}
解决方法
如果函数在不返回的情况下传递了两个if
语句,则不会显式返回任何内容,这意味着它隐式返回了undefined
。在for循环中,如果对solve
的调用成功,则应返回它:
// 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;
}