用递归函数计算数组的平均值

标签 c function recursion average

你会如何编写一个递归函数来计算数组元素的平均值?

这是我目前所拥有的:

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/

相关文章:

c++ - 在迭代 DFS 与递归 DFS 中维护当前节点的上下文

c - 函数声明与原型(prototype)的替代 (K&R) C 语法

php - 通过给定的 ID 获取所有相关的父 ID 和子 ID

c - 如何在 Visual Studio 2019 中只编译一个 C 文件?

function - 有没有一种方法可以获取包含 R 中可以使用的所有函数名称的向量?

jquery - 使用参数调用用户定义的函数

javascript - 在 NodeJS 的 required() 所需的脚本内使用函数

javascript - 太多的递归方案javascript

c++ - 为什么这段代码不返回 0?

无法理解为什么 c 中的 malloc 函数会如下所述执行操作?