Ho dei dubbi su unpassaggio che utilizza la ricorsione per risolvere la torre di hanoi in un programma in c.
sapendo che:
numDischi=3
pioloDiPartenza=1
pioloDiArrivo=3
pioloTemporaneo=2
e svilluppando nel seguente modo:
void muovi_dischi(int numDischi,int pioloDiPartenza,int pioloDiArrivo,int pioloTemporaneo){
if(numDischi==1){
printf("Muovi un disco dal piolo %d al piolo %d\n",pioloDiPartenza, pioloDiArrivo);
}else {
muovi_dischi(numDischi-1, pioloDiPartenza, pioloTemporaneo,pioloDiArrivo);
printf("Muovi un disco dal piolo %d al piolo %d\n\n",pioloDiPartenza, pioloDiArrivo);
muovi_dischi(numDischi-1,pioloTemporaneo, pioloDiArrivo, pioloDiPartenza );
}
}
il problema riesce senza problemi.Il fatto è che non capisco cosa succede ad un certo punto.
entrati nella funzione mi ritrovo subito dentro l'else dove la funzione si richiama subito da sola(2,1,2,3)
l'if non è rispettato e la funzione sfa quello che ha fatto prima(1,1,2,3)
adesso l'if è rispettato e stampa 1->3
e adesso? non capisco cosa succede ora ,dove si posiziona il programma per continuare e sopratutto come continui.
Grazie in anticipo a chi mi darà delucidazioni.