Il tuo codice è un po lungo da analizzare, però ad un occhiata fugace mi pare che nella funzione percorriScacchiera manca più di una return.

Ad esempio il compilatore c# non ti permetterebbe di compilare una cosa del genere, ti darebbe errore del tipo NOT ALL CODE PATHS RETURN A VALUE. Penso anche che il tuo compilatore C, benchè i compilatori C siano molto permissivi ti dia almeno un warning del genere.


Una funzione che dichiara di restituire int deve avere una istruzione return VALORE_INT in ogni punto di uscita del codice. Pur non conoscendo il tuo algoritmo penso che forse dovresti sostituire le varie chiamate ricorsive a percorriScacchiera(...) con return percorriScacchiera.