如何解决我的程序按预期解决了数独难题,但返回未定义
当我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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。