我正在写一个Sudoku求解器,并且我有解决函数的工作。递归。 return func()和if(func())返回true有什么区别?
bool Sudoku::solve(int row, int col){
while (board[row][col] != 0){
col++;
if (col > 8){
col = 0;
row ++;
}
if (row > 8){
return true;
}
}
for (int number = 1; number <= 9; number++){
board[row][col] = number;
if (check_row(row,number) && check_col(col,number) && check_box(row,col,number)){
int next_row = row;
int next_col = col;
next_col++;
if (next_col > 8){
next_col = 0;
next_row++;
}
if (next_row > 8)
return true;
// return solve(next_row, next_col);
if (solve(next_row, next_col))
return true;
}
}
board[row][col] = 0;
return false;
}
我不能真正理解什么是
if (solve(next_row, next_col))
return true;
和
return solve(next_row, next_col);
但与第二线我的函数没有按'之间的区别;科技工作
第二个总是返回一些东西。如果条件错误,第一个继续。 – chris 2013-03-19 18:43:07