我一直在看这个代码块几个小时了,我不知道它是如何工作的。有人可以请详细解释递归如何与这些函数一起工作吗?请记住,我在编程方面非常新颖。麻烦理解递归如何与这个数独求解器一起工作
让我最困惑的部分是solve()如何反复调用?难道它会在达到谜题后停止[row] [col] = 0?
这是工作代码的方式。
编辑:谢谢你的回答!但我不知道它在哪里回溯。
void solve(int row, int col) throws Exception
{
if(row > 8)
{
throw new Exception("Solution found") ;
}
if(puzzle[row][col] != 0)
{
next(row, col);
}
else
{
for(int num = 1; num < 10; num++)
{
if(checkHorizontal(row,num) && checkVertical(col,num) && checkBox(row,col,num))
{
puzzle[row][col] = num ;
next(row, col) ;
}
}
puzzle[row][col] = 0 ;
}
}
public void next(int row, int col) throws Exception
{
if(col < 8)
{
solve(row, col + 1) ;
}
else
{
solve(row + 1, 0) ;
}
}