Ho iniziato oggi con la ricorsione quindi non " prendetemi a calci " 
Ho scritto una funzione che conti le occorrenze di un certo int in un vettore di int. Gli indici first e last indicano la parte del vettore che va controllata.
La funzione funziona con vettori che contengono un numero dispari di elementi, mentre invece non va bene con i numeri pari, oppure se non faccio coincidere first con l'inizio del vettore letto ( mi restituisce un numero di occorrenze maggiore ).
nb: ho scritto la stessa funzione ricorsiva dividendo il vettore in testa e in coda e va tutto bene, quindi sono interessato a implementarla dividendo il vettore a metà con pivot=(first+last)/2.
codice:
int conta(int *vett,int first,int last,int elemento)
{
int parziale1,parziale2;
int pivot;
if(first>last)
return 0;
if(first==last)
{
if(*(vett+first)==elemento)
return 1;
else
return 0;
}
pivot=(first+last)/2;
parziale1=conta(vett,first,pivot,elemento);
parziale2=conta(vett,pivot+1,last,elemento);
if(*(vett+first)==elemento)
{
return parziale1+parziale2 +1;
}
else
{
return parziale1+parziale2 ;
}
}