2004 – 5

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:

  1. determinare se il parametro numero si trova all’interno dell’array vettore fra gli indici i e j
  2. 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
  3. 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
  4. 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…