Hai ragione i vale 4 e invece deve essere 3, e se non sbaglio quel numero enorme corrispondeva al contenuto dell'array nella posizione 5, possibile?
Sì! La somma comprendeva anche il valore dell'array all'indice 4 che era un valore casuale.
...il mio dubbio è che se nel ciclo for pongo i<MAX, i alla fine dovrebbe essere 3, e invece vale 4..
Quello che dici non è esatto. Il ciclo for incrementa i fino a 4 per poter fallire l'ulimo confronto con MAX e uscire. Pensaci un attimo e vedrai che ti torna.
Per come hai scritto tu la funzione puoi, se ti piace di più, scrivere la chiamata così:
som=somma(MAX-1, array);
se proprio non vuoi fare il decremento di i.
Oppure pensare diversamente la funzione ricorsiva, magari in questo modo:
int mysomma(int pos, int n, int array[n]){
if (pos==n)
return 0;
return array[pos] + mysomma(pos+1, n, array);
}
Chiamandola con i seguenti parametri:
som=mysomma(0, MAX, array);
P.s. Per favore usa i tag
per postare codice, possibilmente indentato.