Für einen rekursiven Algorithmus musst du Basisfälle finden, und dann dein Problem darauf kollabieren lassen.
Der Basisfall bei Sudoku ist wenn ein Feld nur eine legale Belegung hat.
Für jedes Feld für das es mehrere Belegungen gibt musst du zunächst die freien Nachbarn (selbe reihe, selbe Zeile oder selbes Kästchen) auswerten.
Das ist aber nur das sehr simple grundgerüst, und alles andere als optimal (wobei ich Sudoku auch nicht rekursiv lösen würde). Wenn es aber keine anderen Einschränkungen gibt außer das es rekursiv sein muss kann man auch andere lustige Algorithmen basteln. z.B.
Code:
bool solveField(index) {
if (index == fieldCount) return checkIfGameIsValid();
else if (index) {
gameFields[index] = rand() % 9;
return solveField(index + 1);
} else do {
gameFields[index] = rand() % 9;
} while (!solveField(index + 1));
return true;
}