Calculer la moyenne d'un tableau avec une fonction récursive
Comment voulez-vous écrire une fonction récursive qui calcule la moyenne des éléments d'un tableau?
Voici ce que j'ai à ce jour:
int media(int numeros[], int i, int n) {
if (i == n-1) return numeros[i]/n;
return numeros[i]/n + media(numeros, i + 1, n);
}
Mais ça ne fonctionne pas, et je pense que c'est à cause de la ligne: if (i == n-1) return numeros[i]/n;
- La moyenne d'un 1er élément de la matrice est simplement la valeur de l'élément. Votre formule pour la combinaison de la moyenne de la valeur restante avec l'élément actuel est mauvais trop
Vous devez vous connecter pour publier un commentaire.
Comment à ce sujet:
Ce que vous avez à faire est de diviser par le nombre d'éléments de chaque appel - faire qui vous donnera la moyenne incorrecte. Le code ci-dessus ne ce que vous faisiez, mais comme sa sur le point de retourner le résultat (quand
i==0
) il va calculer la moyenne réelle basée sur le total de tous les élémentsLe problème est que si vous divisez chaque élément, en raison de l'arrondissement (en entier), vous aurez très probablement obtenir une réponse incorrecte (integer division par un entier retourne entier).
Pour
{1,2,3,4}
, nous allons diviser chaque élément par 4 -1/4 + 2/4 + 3/4 + 4/4
, mais chaque division retourne un entier, de sorte que tous d'entre eux sont 0 et le résultat est 0.Donc, soit faire
double
: (mais c'est toujours mieux de diviser à la fin, à cause de l'arrondi)Ou fracture à la fin: (la voie de Sean Landsman, ou, plutôt, comme ci-dessous)
De l'appelant: