Sto provando a fare lo stesso esercizio e per evitare di aprire un'altra discussione, scrivo qui. Ho preso spunto dalla funzione suggerita da ramy89, ma non riesco a capire come farla ricorsiva... ho scritto così:
codice:
int conta(int *v, int i, int j, int elem){
int occorrenze=0;
if(i==j){
printf("L'array ha un solo elemento: %d\n", *v);
}
for(i=0; i<=j; i++){
if(v[i]==elem){
occorrenze=occorrenze+1;
}
}
return occorrenze;
}
e questo è il main:
codice:
int main(){
int *p, dim, i, n, x;
printf("Inserisci la dimensione del vettore: ");
scanf("%d", &dim);
if(dim==0 || dim<0){
printf("Dimensione non valida!\n");
return 0;
}
p=(int *)malloc(dim*sizeof(int));
printf("Inserisci gli elementi del vettore:\n");
for(i=0; i<dim; i++){
scanf("%d", (p+i));
}
printf("\nInserisci l'elemento da cercare: ");
scanf("%d", &x);
n=conta(p, 0, dim-1, x);
printf("Il numero %d e' presente %d volte\n\n", x, n);
system("PAUSE");
}
Come posso renderla ricorsiva?
Ogni volta che devo pensare ad una funzione ricorsiva, sono in difficoltà perchè il ragionamento è abbastanza contorto (il dover richiamare la funzione all'interno della funzione stessa) , o forse sono io che sono cretino
Suggerimenti ?