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ì:
e questo è il main: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; }
Come posso renderla ricorsiva?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"); }![]()
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 ?![]()


Rispondi quotando