mhh...
vediamo, ti dò un piccolo suggerimento, se ad esempio abbiamo la necessità di stampare la stringa "ciao" prima da sinistra verso destra e poi da destra verso sinistra attraverso la ricorsione diventa abbastanza facile, basta fare una cosa del genere
dove i è l'indice iniziale e j è la lunghezza della parola, in questo caso 4, con questa semplice funzione otteniamo ciaooaic, se hai presente come funziona la ricorsione il perché dovrebbe esserti abbastanza chiaro, in pratica noi stampiamo s[0] e chiamiamo la funzione ric, attenzione perché intanto la chiamata numero 1 non è ancora terminata, e via dicendo fino a quando la condizione nell'if non è verificata.codice:void ric(char *s, int i, int j) { if(i>=j) return; else{ printf("%c", s[i]); ric(s, i+1, j); printf("%c", s[i]); } }
Facciamo il punto della situazione
arrivati a questo punto la condizione dell'if al passo seguente è verificata, quindi non vengono più effettuate chiamate alla funzione e vengono riprese le funzioni precedentemente chiamate, partendo dall'ultima, quindi si avrà la stampa al contrario "oaic".codice:chiamata 1: i=0; s[i]='c' 2: i=1; s[i]='i' 3: i=2; s[i]='a' 4: i=3; s[i]='o'
Ora prova ad applicare più o meno lo stesso ragionamento sul tuo esercizio, se non ti è chiaro qualcosa chiedi pure.

Rispondi quotando