私は再帰関数について研究してきましたが、明らかに、それらは自分自身を呼び出す関数であり、反復/ループを使用しません(そうでなければ、再帰関数ではありません)。
しかし、例(8クイーンの再帰問題)のためにWebをサーフィンしているときに、この関数が見つかりました。
private boolean placeQueen(int rows, int queens, int n) {
boolean result = false;
if (row < n) {
while ((queens[row] < n - 1) && !result) {
queens[row]++;
if (verify(row,queens,n)) {
ok = placeQueen(row + 1,queens,n);
}
}
if (!result) {
queens[row] = -1;
}
}else{
result = true;
}
return result;
}
あります while
関係ループが。
...だから私は少し迷っています。ループを使用できますか?
placeQueen
は「8クイーンを配置」で、より簡単なバージョンplaceQueen
は「7クイーンを配置」(その後6桁など)