Media in un array con ricorsione
Ciao a tutti,
mi potete controllare questo esercizio perfavore?
scrivere una funzione che calcoli la media degli elementi contenuti in un array di numeri e che rispetti la seguente interfaccia:
Io l'ho risolto in questo modo ma non ne sono sicurissimo, anzi posso già dire che ne potrebbe mancare una parte
mi potete controllare questo esercizio perfavore?
scrivere una funzione che calcoli la media degli elementi contenuti in un array di numeri e che rispetti la seguente interfaccia:
float avg(float A[], int size)utilizzare il meccanismo della ricorsione (e’ possibile realizzare funzioni ausiliarie)
Io l'ho risolto in questo modo ma non ne sono sicurissimo, anzi posso già dire che ne potrebbe mancare una parte
float avg (float A[], int size) { int N = {6, 8, 10, 12, 14} if (size == 0) return 0; else return A[N] + avg (A, size - 1); }
Risposte
La media di 0 e 10 è, quindi... ?
La riga
non compila e non mi è chiaro che cosa tu voglia fare. Dopodichè sembra tu stia calcolando la somma, non la media.
int N = {6, 8, 10, 12, 14}
non compila e non mi è chiaro che cosa tu voglia fare. Dopodichè sembra tu stia calcolando la somma, non la media.
"apatriarca":
La riga
int N = {6, 8, 10, 12, 14}
non compila e non mi è chiaro che cosa tu voglia fare. Dopodichè sembra tu stia calcolando la somma, non la media.
La N infatti ho sbagliato a metterla e la levo, la mia domanda era proprio come procedere per il calcolo della media, devo modificare la ricorsione aggiungendo / size?
"MatteFra":
La N infatti ho sbagliato a metterla e la levo, la mia domanda era proprio come procedere per il calcolo della media, devo modificare la ricorsione aggiungendo / size?
E se lo fai a mano con 1,2,3 funziona?
La media di \(n\) valori è definita come \(\sum_{i=1}^n a_i/n\). Per il calcolo usando una formula ricorsiva puoi osservare che se hai una media sui primi \(n-1\) valori allora puoi calcolare la media di tutti usando la formula \(a_n/n + (n+1)/n \sum_{i=1}^{n-1} a_i/(n-1)\).
Ovviamente c'è anche la soluzione di usare la ricorsione di una funzione ausiliaria solo per il calcolo della somma avendo quindi il corpo della media uguale a
return sum(A,size)/size;
Grazie mille!! Mi torna tutto allora!

"apatriarca":
La media di \(n\) valori è definita come \(\sum_{i=1}^n a_i/n\). Per il calcolo usando una formula ricorsiva puoi osservare che se hai una media sui primi \(n-1\) valori allora puoi calcolare la media di tutti usando la formula \(a_n/n + (n+1)/n \sum_{i=1}^{n-1} a_i/(n-1)\).
$(n+1)$ è un typo?
Sì, dovrebbe essere (n - 1)..