Salve a tutti, vorrei un parere sul seguente esercizio
ES: (Visualizzare un vettore) Scrivete una funzione ricorsiva stampa_vettore che riceva come argomenti un vettore e la sua dimensione e non restituisca alcun dato. La funzione dovrà terminare la propria elaborazione e restituire il controllo a quella chiamante, quando avrà ricevuto un vettore di dimensione 0.
io l'ho svolto così:
#include <stdio.h>
#define DIM 10
void stampa_vettore(const int vett[], int size);
int main()
{
int vettore[DIM] = {1,2,3,4,5,6,7,8,9,10};
printf("\n");
stampa_vettore(vettore, DIM);
printf("\n\n");
return 0;
}
void stampa_vettore(const int vett[], int size)
{
if(size == 0)
return;
else
{
printf("%d ", vett[--size]);
return stampa_vettore(vett, size);
}
}
Il codice funziona ma il vettore viene visualizzato al contrario visto che parto da size 9 fino ad arrivare a size 0 (come chiede la traccia). Come posso visualizzarlo correttamente? o va bene svolto così?
L'unico modo che ho trovato per visualizzarlo correttamente è stato quello di dichiarare una variabile inizializzata a 0 nel main e di passarla alla funzione stampa_vettore al posto di size e incrementando tale variabile nei passi ricorsivi, ma non rispetterei la traccia che chiede di passare la dimensione del vettore.
Grazie.