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);