Buonasera , ho iniziato soltanto ieri a studiare la ricorsione e mi servirebbe un aiuto su un esercizio, sto riscontrando molte difficoltà sull'argomento. Per capire come ragionare l'ho svolto prima in modo
iterativo e poi ho provato a farlo in modo
ricorsivo. L'esericizio chiede: "Assegnato un vettore D di dimensione N, scrivere una funzione ricorsiva che calcoli il minimo valore tra la differenza di ogni elemento con il precedente (escluso il primo)". Quindi dato per esempio questo vettore:
4 7 8 5 9
La funzione dovrebbe verificare:
5-9=-4
8-5=3
7-8=-1
4-7=-3
e restituire -4.
In modo iterativo ricevo la giusta soluzione, in modo ricorsivo no . Ecco il codice:
/*ITERATIVA*/
int minore(int *v, int dim){
int min=0, dif, i;
for(i=dim-2; i>=0; i--){
dif=v[i]-v[i+1];
if(dif<min){
min=dif;
}
}
return min;
}
/*RICORSIVA*/
int minore2(int *v, int dim, int min){
if(dim>0){
if(v[dim-2]-v[dim-1]<minore2(v,--dim, (v[dim-2]-v[dim-1])));
min=(v[dim-2]-v[dim-1]);
}
else
return min;
}