Ciao a tutti.
Mi sono imbattuto ieri in due funzioni ricorsive, di cui non riesco a capirne la differenza (se non a differenza di codice).
La prima funziona è la stampa di un array:
codice:void stampa(float A[],int dim) { if (dim == 0){ return; } else { stampa(A, dim-1); cout << A[dim-1] << " "; } }
La seconda invece è la stampa di un array invertendone l'ordine:
codice:void stampa_contrario(float A[],int dim) { if (dim == 0){ return; } else { cout << A[dim-1] << " "; stampa_contrario(A, dim-1); } }
C'è qualche buon'anima che mi spiega come funzionano questa funzioni? Nel senso, perché nella funzione stampa viene prima richiamata per ricorsione la medesima funzione e poi viene fatto un cout, mentra nella funzione stampa_contrario viene appunto invertito l'ordine?
Una spiegazione a livello visivo di come agiscono queste due funzioni penso che mi risolverebbe molto le cose.
Grazie mille a tutti quanti risponderanno.
Stefano

Rispondi quotando