Allora, presupponento che è solo un esercizio, la funzione è ok ( a meno di una cavolata che ti scrivo in fondo)
Se segui mentalmente cosa accade quando chiami la funzione ti accorgi ogni valore viene scansionato dal tuo secondo IF, ovvero:
Indi l'ultimo controllo e' inutile/dannoso, ovvero conti due volte lo stesso elemento.codice:if(first==last) { if(*(vett+first)==elemento) return 1; else return 0; }
Detto in altri termini, devi eliminare questa parte:
e sostituirla con:codice:if(*(vett+first)==elemento) { return parziale1+parziale2 +1; } else { return parziale1+parziale2 ; }
tutto qua =)codice:return parziale1 + parziale2;
per quanto riguarda quella cavolata a cui alludevo inizialmente, i primi due controlli non fanno uso delle variabili locali, indi e' inutile istanziare queste ultime prima =)
in altre parole:
occupa meno memoria =)codice:if(first==last) { if(*(vett+first)==elemento) return 1; else return 0; } if(first>last) return 0; int parziale1,parziale2; int pivot;
Buon proseguimento di studio ^^

Rispondi quotando