In sostanza non serve modificare la logica della funzione, basta usare correttamente le istruzioni return:
Codice:
void
hanoi(int dischi, int a, int b, int c)
{
if(dischi) {
printf("%d --> %d\n", a, c);
return;
}
hanoi(dischi - 1, a, c, b);
printf("%d --> %d\n", a, c);
hanoi(dischi - 1, b, a, c);
return;
}
anche se come ha scritto Vicius č sicuramente un modo molto piu' pulito di procedere. In genere non si dovrebbe mai aprire un blocco di un if() solo per includere un'istruzione con relativa return.