Un'altra possibile soluzione
codice:double media( struct tipo1 *p, int n, double &mediaVoti ) { if( n ) { cout<<"Nome : "<<p[n].nome<<" \t"<<p[n].cognome<<" \t"<<p[--n].voto<<endl; media( p, n, (mediaVoti += p[n].voto) ); } return mediaVoti / ++n; }
da richiamare in questo modo
codice:double mediaVoti = 0.; mediaVoti = media( p, N, mediaVoti);

Rispondi quotando
, l'unico rischio nel mio codice, così come nei tuoi è una vulnerabilità del tipo division by zero, ma facilmente ovviabile.