0
這是我的遞歸函數,用於解決N-Queens
問題,要求查找棋盤上的皇后配置的數量,以便它們不能相互攻擊。在validPosition
這個函數的幫助下,這個函數成功地爲每個N的值輸入了合適的次數(curRow == N)
。但是,我不清楚如何提取這些信息。如果函數輸入基本情況10次,則此函數應該返回10.如何從遞歸函數中提取基本返回值?
但是,讓它返回布爾值是在其遞歸調用中有條件地分支的技術。是否有一個乾淨而一致的方法來輸入基本情況正確的次數,併成功地將該信息傳播到根函數調用並將其返回給調用者?
static boolean findNQueensSolutions(int N, int curRow, int[][] board, int result) {
if (curRow == N) {
return true;
}
for (int curCol = 0; curCol < N; curCol++) {
if (validPosition(board, curRow, curCol, N)) {
board[curRow][curCol] = 1;
if (findNQueensSolutions(N, curRow + 1, board, result)) {
return true;
}
board[curRow][curCol] = 0;
}
}
return false;
}
這是我最初的方法,但我要麼繞了一個荒謬的高結果或1煩人我不能確定是什麼錯誤,我正在製作,但現在起作用。謝謝! –