PDA

View Full Version : [C] Ricerca dicotomica


~FullSyst3m~
15-12-2008, 13:14
Ho pensato di scrivere un programma che calcola il codice fiscale, in Python. Come algoritmo di ricerca del comune in un file ho pensato di usare quello binario. La mia domanda però non riguarda l'algoritmo, ma bensì la ricorsione. Mi spiego. http://it.wikipedia.org/wiki/Ricerca_dicotomica qua c'è la spiegazione dell'algoritmo con del codice C. Io non conosco C, ma è comprensibile il codice. Quello che mi ha lasciato perplesso è che nella spiegazione c'è messo che il primo codice è ricorsivo e il secondo no. Io non vedo dove sia la ricorsione nel primo codice, la ricorsione la vedo solo nel codice Java.
La ricorsione dovrebbe significare una funzione che chiama se stessa, però nel prime codice C non vedo nessuna ricorsione

Miky Mouse
15-12-2008, 14:08
/*written in C by SNIPER*/
/*funzione di ricerca su un array di interi*/
int ricerca_binaria(int array[], int x, int start, int end) /*x è il valore da cercare!*/
{
int m;
while(end >= start)
{
m= (start + end)/2;
if(x == array[m]) return m;
(x < array[m])? end=(m-1) : start= (m+1);
ricerca_binaria(array[],x,start,end)
}
return (-1);
}


vero... manca una riga (probabilmente perche ha impostato tutti i valori e manca solo la chiamata)... questo dovrebbe essere corretto.

~FullSyst3m~
15-12-2008, 14:46
/*written in C by SNIPER*/
/*funzione di ricerca su un array di interi*/
int ricerca_binaria(int array[], int x, int start, int end) /*x è il valore da cercare!*/
{
int m;
while(end >= start)
{
m= (start + end)/2;
if(x == array[m]) return m;
(x < array[m])? end=(m-1) : start= (m+1);
ricerca_binaria(array[],x,start,end)
}
return (-1);
}


vero... manca una riga (probabilmente perche ha impostato tutti i valori e manca solo la chiamata)... questo dovrebbe essere corretto.

Eh infatti, non mi quadrava la cosa

banryu79
15-12-2008, 15:35
Bravo FullSyst3m, ottimo spirito di osservazione :)
Ora qualcuno dovrebbe segnalare la cosa in modo che possano correggere la svista in quella pagina di wikipedia.

~FullSyst3m~
15-12-2008, 15:43
Bravo FullSyst3m, ottimo spirito di osservazione :)
Ora qualcuno dovrebbe segnalare la cosa in modo che possano correggere la svista in quella pagina di wikipedia.

Grazie banryu:)

P.S: ho corretto direttamente io la svista