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

 
			
			
 
					
					
					
						 Rispondi quotando
  Rispondi quotando