Прости что так критично.. больше небуду =)
Да, рекурсия простой способ получить нужный результат. Ну например:
int SetOneShip(int x, int y) {
if (fieldCPU[x][y] > 0 ) return SetOneShip(Randomize9(),Randomize9());
fieldCPU[x][y] = 1;
return 0;
}
Данная функция пытается поставить однопалубный кораблик в то место где еще не занято и будет это делать до тех пор пока не поставит =)
Для многопалубных рекурсия немного сложнее.