Si consideri la seguente funzione
bool calcola(int numero, int* vettore, int i, int j) { int m=(i+j)/2; int off=vettore[m]-numero; if(off == 0) { return true; } else if(i == j) { return false; } else if(off > 0) { return calcola(numero, vettore, i, m-1); } else { return calcola(numero, vettore, m + 1, j); } }Determinare quale fra i seguenti problemi è risolto dall’algoritmo implementato:
Risposte:
- determinare se il parametro numero si trova all’interno dell’array vettore fra gli indici i e j
- determinare se il parametro numero si trova all’interno dell’array vettore fra gli indici i e j quando i valori in vettore sono ordinati dal più piccolo al più grande
- determinare se il parametro numero si trova all’interno dell’array vettore fra gli indici i e j quando i valori in vettore sono ordinati dal più grande al più piccolo
- nessuna delle precedenti
Soluzione: b (determinare se il parametro numero si trova all’interno dell’array vettore fra gli indici i e j quando i valori in vettore sono ordinati dal più piccolo al più grande)
Si tratta dell’algoritmo di ricerca binaria applicato al sottovettore con indici da i a j…