我尝试通过引用this.来编写算法
但是我得到了StackOverFlow的错误
帮帮我找出程序中的错误?它是递归部分吗?
public void beginSolving(int board[][],int x,int y){
int i = 1;
if(unassignedCell(board,x,y)){
board[x][y] = i;
if(isValidCell(board,y,x,i)){
board[x][y] = i;
}
if(!isValidCell(board,y,x,i)){
board[x][y] = 0;
i++;
}
} else {
while(x<9){
beginSolving(board,x++,y);
if(x==9){
x = 1;
beginSolving(board,x,y++);
if(y==9){
}
}
}
}
}
答案 0 :(得分:3)
查看递归调用:beginSolving(board,x++,y)
。 x
和y
参数与原始调用中的参数相同(请记住x++
的值是递增之前的值)。因此,您可能会输入一个永无止境的递归。
while(x < 9)
永远不会终止,因为只要x
达到9,它就会重置为1.
算法永远不会尝试将1以外的数字设置到电路板中。
代码可能还有其他问题,我没有详细检查。