我的程序按预期解决了数独谜题,但 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)
  }
}

Here is a JSFiddle

如果函数在没有 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;
}