Berechnen Sie den Durchschnitt eines Arrays mit einer rekursiven Funktion
Wie würden Sie schreiben Sie eine rekursive Funktion berechnet den Durchschnitt der Elemente eines Arrays?
Hier ist, was ich habe, so weit:
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);
}
Aber es funktioniert nicht, und ich denke, es ist wegen der Zeile: if (i == n-1) return numeros[i]/n;
- Der Durchschnitt der 1-Element-array ist nur der Wert des Elements. Die Formel für die Kombination der Durchschnitt der übrigen Wert mit dem aktuellen Element falsch ist, zu
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie wäre es damit:
Was man tut, ist, geteilt durch die Anzahl der Elemente jeder Anruf zu tun, geben Sie den falschen Durchschnitt. Der obige code das tut, was Sie tun, sondern wie Ihr über das Ergebnis zurückgeben (wenn
i==0
) es wird die Berechnung der tatsächlichen durchschnittlichen basierend auf der Summe aller ElementeDas problem ist, dass wenn man dividiert jedes element, weil der Rundung (integer), wirst du sehr wahrscheinlich eine falsche Antwort (integer dividiert durch integer returns integer).
Für
{1,2,3,4}
, wir teilen jedes element von 4 -1/4 + 2/4 + 3/4 + 4/4
, aber jede division liefert eine ganze Zahl, so dass alle von Ihnen sind 0 und das Ergebnis ist 0.So, entweder machen es
double
: (aber es ist immer noch besser, auch teilen am Ende, wegen der Rundung)Oder teilen am Ende: (entweder die Art und Weise Sean Landsman vorgeschlagen, oder wie unten)
Anrufer: