Faça uma função recursiva que permita calcular a média um vetor de tamanho N.

Passo 1

O problema pede uma função recursiva que calcule a média de um vetor de tamanho N. Para isso vamos usar o conceito de média aritmética e de recursão, definindo um caso base simples e um passo recursivo que reduza o problema de tamanho n para n-1.

Passo 2

Definimos a média dos primeiros n elementos como
A(n) \;=\;\frac{1}{n}\sum_{i=0}^{n-1}v[i].
Seja A(n-1) a média dos primeiros n-1 elementos; então o somatório desses é (n-1)\,A(n-1). Acrescentando o elemento v[n-1], a soma dos n elementos fica
(n-1)\,A(n-1) + v[n-1],
e a média recursiva satisfaz
A(n) \;=\; \frac{(n-1)\,A(n-1) + v[n-1]}{n}.
O caso base é A(1)=v[0].

Passo 3

Traduzindo essa ideia para C, temos:
double media(int v[], int n) {
    if (n == 1) {
        return v[0];
    }
    return (((n - 1) * media(v, n - 1)) + v[n - 1]) / (double)n;
}

Resposta

double media(int v[], int n) {
    if (n == 1) {
        return v[0];
    }
    return (((n - 1) * media(v, n - 1)) + v[n - 1]) / (double)n;
}

Exercícios relacionados