Я пытаюсь закодировать решатель судоку с рекурсией и возвратом. Но есть некоторые проблемы с моим кодом, он всегда возвращает false. Я попытался отладить, он вызывает метод next (int row, int col) до второй строки, шестого столбца, а затем останавливается и начинается обратное отслеживание. Проблема в том, что возврат продолжается до первой ячейки в моей игре судоку, а затем возвращается false. Он не заменяет номера ячеек другими.
вот мой код ... я что-нибудь пропустил?
/** Calls solve for the next cell */
private boolean next(int row, int col) {
if (col < 8)
return solve(row, col + 1);
else
return solve(row + 1, 0);
}
public boolean solve(int row, int col) {
if (row > 8) {
return true;
}
if (model[row][col] != 0) {
if (isSafe(row, col, model[row][col]))
return next(row, col);
}
for (int value = 1; value < 10; value++) {
if (isSafe(row, col, value)) {
model[row][col] = value;
return next(row, col);
}
}
return false;
}