Salve a tutti,
ho da poco iniziato a programmare in Java con Eclipse. Devo creare un metodo ricorsivo (senza usare comandi iterativi) che preso un array di interi e due interi che fanno da inizio e fine intervallo, mi restituisca un
double con la media dei valori dell'intervallo. Prima ho scritto il metodo senza ricorsione con un ciclo
for, poi ho cercato di trasporlo in metodo ricorsivo. Sono riuscito a eseguire la somma ma non la divisione per il numero di valori dell'intervallo scelto. Il codice sarà più esplicativo:
public class MainClass {
static double mediaComandoIterativo(int[]a, int l, int r) { //IL METODO SENZA RICORSIONE FUNZIONA
if (a==null || a.length==0 || l<0 || l>a.length || r<0 || r>a.length) return -1;
if (l==r) return l;
int somma=0;
if (r>l) {
for (int i=l; i<=r; i++) somma+=a[i];
return somma/(r-l+1);
}
else {
for (int i=r; i<=l; i++) somma+=a[i];
return somma/(l-r+1);
}
}
static double media(int[]a, int l, int r) { //IL METODO RICORSIVO NON FUNZIONA
//if (a==null || a.length==0 || l<0 || l>a.length || r<0 || r>a.length) return -1;
if (l==r) return a[r];
return a[r]+media(a, l, --r); //NON RIESCO A TROVARE IL MODO DI FARE LA DIVISIONE PER IL NUMERO DI VALORI DELL'INTERVALLO
}
public static void main(String[] args) {
int[]a={5,2,7,9,3};
System.out.println(media(a, 1, 3));
}
}