Salve,
Se v é um vetor com n elementos então esses elementos são: v[0], v[1], ..., v[n-1].
Em C uma função devolve apenas um valor, que pode ser um estrutura (como no EP2), mas é apenas um valor.
Em C passagem o mecanismo de passagem de parâmetros é muito simples.
A passagem é sempre "por valor".
Para uma função alterar o valor de uma variável ela deve receber o endereço da variável (ponteiro para a variável).
/* maxmin(n,v,*max,*min) Recebe um vetor de inteiros v[0..n-1] e devolve em *max o maior elemento do vetor e em *min o menor elemento. A funcao faz entre n-1 e 2(n-1) comparacoes entre elementos do vetor. Quando a funcao faz n-1 comparacoes? Quando a funcao faz 2(n-1) comparacoes? Pre-condicao: a funcao supoe que o vetor tem pelo menos um elemento (n >= 1) */ void maxmin(int n, int v[], int *max, int *min) { if (n == 1) { *max = *min = v[0]; } else { maxmin(n-1, v, max, min); /* maximo e minimo de v[0..n-2] */ if (v[n-1] > *max) { *max = v[n-1]; } else if (v[n-1] < *min) { *min = v[n-1]; } } } /*-------------------------------------------------------------*/ /* Versao mais curta e grossa. Faz 2(n-1) comparacoes */ void maxmin(int n, int v[], int *max, int *min) { if (n == 1) { *max = *min = v[0]; return; } maxmin(n-1, v, max, min); /* maximo e minimo de v[0..n-2] */ if (v[n-1] > *max) *max = v[n-1]; if (v[n-1] < *min) *min = v[n-1]; }