Ciao! Devo scrivere una funzione ricorsiva che, dato un array di interi, restituisce il massimo tra tutti i numeri ottenuti sommando due elementi consecutivi dell'array.

Questo è quello che ho scritto io:

codice:
#include <stdio.h>

int max(int *v,int dim){
  if(dim==0) return 0;
  if(dim==1) return (v[0]+v[1]);
  else{
    if(v[dim-1]+v[dim-2]>=max(v,dim-1)) return (v[dim-1]+v[dim-2]);
  }
}

int main(){
  int v[5]={10,5,30,2,20};

  printf("%d\n",max(v,5));
  return 0;
}
però quando eseguo il programma restituisce numeri casuali a 10 cifre, cosa sbaglio?