1
我試圖實現一個數獨解算器。我調用方法printSoluition(板),它應該打印出的解決方案,如果存在或無效。返回掀起了靜態,遞歸Java方法不起作用
我與有一個解決方案的例子嘗試它。但它總是返回null。
我的代碼:
static void printSolution(SudokuBoard board) {
SudokuBoard resultBoard = findSolution(board);
if(resultBoard != null) {
resultBoard.print();
}
}
static SudokuBoard findSolution(SudokuBoard board) {
if (board.isSolved()) {
return board;
} else {
int nextEmptyField = getNextFreeIndex(board);
if (nextEmptyField != -1) {
int[] kandidaten = board.getCandidates(nextEmptyField);
for (int i = 0; i < kandidaten.length; i++) {
SudokuBoard newBoard = board.set(nextEmptyField,
kandidaten[i]);
return findSolution(newBoard);
}
}
return null;
}
}
我不明白你的「因爲你的循環永遠不會過去的第一候選人」 ..你能描述一下它多一點,請 – mrbela 2014-11-23 21:17:26
@ user2438518您當前的環有一個** **無條件'return'聲明在它裏面,這就是爲什麼它從來沒有真正迭代。所以,如果您在任何級別挑第一候選人不會導致一個解決方案,你一定會返回'null'。 – dasblinkenlight 2014-11-23 21:19:33