如何正确求和数组的元素

时间:2019-05-10 13:38:22

标签: c if-statement recursion

我正在运行一个递归程序,该程序获取一个数组,打印出数组中的所有值,对这些值求和,并取这些值的平均值,但是这些值未求和。

int sum(int Arr[], int num)
{
    int x = 0;
    int ans;

    if (x == num - 1)
        ans = Arr[x];
    else
        ans = Arr[x] + sum(Arr, x + 1);
    return (ans);
}

如果我输入值1、2、3,我应该得到6的平均值和3.00的平均值,但是我得到2的平均值和0.00的平均值。

2 个答案:

答案 0 :(得分:0)

具有1个元素的数组的总和(和平均值)就是该元素

if (n == 1) {
    return a[0]; 
}

否则,sum是添加到数组其余部分之和的第一个元素

return a[0] + sum(a+1, n-1);

现在,您知道递归方法的总和,您已经知道有多少个元素,因此只需除以得到平均值

avg = sum(a, n) / n;

在一起

#include <stdio.h>

double sum(double *arr, size_t n) {
    if (n == 1) return *arr;
    return *arr + sum(arr + 1, n - 1);
}

int main(void) {
    double x[] = {3.14159, 2.71828182, -1, 0.0000042, 2019};
    double ss = sum(x, 5);
    printf("sum: %g; avg %g\n", ss, ss / 5);
}

请参阅code running on idone

答案 1 :(得分:0)

#define ARR_SIZE 3
    int sum(int Arr[], int index\*starting from 0*\)
{
    int ans;

    if (index == SIZE - 1)
        ans = Arr[index];
    else
        ans = Arr[index] +  sum(Arr, index + 1 );
    return (ans);
}

如果还有其他问题,请评论,祝你好运!