Media in un array con ricorsione

Messaggioda MatteFra » 27/01/2023, 18:53

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:
Codice:
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
Codice:
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);
}
MatteFra
Starting Member
Starting Member
 
Messaggio: 9 di 20
Iscritto il: 27/12/2019, 13:16

Re: Media in un array con ricorsione

Messaggioda ghira » 27/01/2023, 18:57

La media di 0 e 10 è, quindi... ?
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 1978 di 3914
Iscritto il: 11/09/2019, 09:36

Re: Media in un array con ricorsione

Messaggioda apatriarca » 27/01/2023, 20:51

La riga
Codice:
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
Moderatore
Moderatore
 
Messaggio: 5707 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Media in un array con ricorsione

Messaggioda MatteFra » 28/01/2023, 15:00

apatriarca ha scritto:La riga
Codice:
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
Starting Member
Starting Member
 
Messaggio: 10 di 20
Iscritto il: 27/12/2019, 13:16

Re: Media in un array con ricorsione

Messaggioda ghira » 28/01/2023, 22:33

MatteFra ha scritto: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?
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 1983 di 3914
Iscritto il: 11/09/2019, 09:36

Re: Media in un array con ricorsione

Messaggioda apatriarca » 29/01/2023, 20:04

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)\).
apatriarca
Moderatore
Moderatore
 
Messaggio: 5708 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Media in un array con ricorsione

Messaggioda apatriarca » 29/01/2023, 20:10

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
Codice:
return sum(A,size)/size;
apatriarca
Moderatore
Moderatore
 
Messaggio: 5709 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Media in un array con ricorsione

Messaggioda MatteFra » 30/01/2023, 14:24

Grazie mille!! Mi torna tutto allora! :D
MatteFra
Starting Member
Starting Member
 
Messaggio: 15 di 20
Iscritto il: 27/12/2019, 13:16

Re: Media in un array con ricorsione

Messaggioda ghira » 31/01/2023, 10:22

apatriarca ha scritto: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?
Avatar utente
ghira
Cannot live without
Cannot live without
 
Messaggio: 1984 di 3914
Iscritto il: 11/09/2019, 09:36

Re: Media in un array con ricorsione

Messaggioda apatriarca » 01/02/2023, 15:00

Sì, dovrebbe essere (n - 1)..
apatriarca
Moderatore
Moderatore
 
Messaggio: 5710 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite