你会如何编写一个递归函数来计算数组元素的平均值?
这是我目前所拥有的:
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);
}
但它不起作用,我认为这是因为以下行:if (i == n-1) return numeros[i]/n;
最佳答案
这个怎么样:
double media(int numeros[], int i, int n) {
if (i == n - 1) {
return numeros[i];
}
if (i == 0)
return ((numeros[i] + media(numeros, i + 1, n)) / n);
else
return (numeros[i] + media(numeros, i + 1, n));
}
您所做的是除以每次调用的元素数量 - 这样做会得到不正确的平均值。上面的代码完成了您正在做的事情,但是当它即将返回结果时(当 i==0
时),它将根据所有元素的总和计算实际平均值
关于用递归函数计算数组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15459717/