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