問題は、(整数への) 丸めのために各要素を除算すると、おそらく間違った答えが得られることです (整数による整数除算は整数を返します)。
の場合{1,2,3,4}
、各要素を 4 -1/4 + 2/4 + 3/4 + 4/4
で除算しますが、各除算は整数を返すため、それらはすべて 0 であり、結果は 0 です。
したがって、どちらかを作成しますdouble
:(ただし、丸めのために、最後に分割する方が良いです)
double media(int numeros[], int i, int n){
if (i == n-1) return 1.0*numeros[i-1]/n;
return 1.0*numeros[i]/n + media(numeros, i + 1, n);
}
または最後に分割します:(Sean Landsmanが提案した方法、または以下のように)
int media(int numeros[], int i, int n){
if (i == -1) return media(numeros, 0, n)/n;
if (i == n-1) return numeros[i-1];
return numeros[i] + media(numeros, i + 1, n);
}
発信者:
int media(array, -1, n);