Salve a tutti, vorrei un chiarimento in merito al seguente codice:
#include <stdio.h>
#define DIM 10
void invertiVettore(const int vett[], int start, int dim);
int main()
{
int vettore[DIM] = {8,3,1,2,6,0,9,7,4,5};
printf("\nil vettore invertito e' : \n");
invertiVettore(vettore, 0, DIM);
printf("\n\n");
return 0;
}
void invertiVettore(const int vett[], int start, int dim)
{
if(start < dim)
{
invertiVettore(vett, start+1, dim);
printf("%d ", vett[start]);
}
return;
}
questo algoritmo stampa a video il vettore al contrario (per intenderci da 5a8) ma non sono sicuro di aver capito come funziona la chiamata ricorsiva, perciò provo a scrivere cosa ho capito: finchè è verificata la condizione dell'if (start < dim) viene chiamata la funzione invertiVettore su start+1 fino a raggiungere il valore di DIM, a quel punto la condizione dell'if non è più "vera" e quindi la printf inizia a stampare a video il valore di vett[start] a ritroso fino a raggiungere vett[0]. E' corretto? Grazie in anticipo