int cauta(int st, int dr)
{
if (st == dr)
{
if (A[st] == who) return st;
return -1;
}
int m = (st + dr) >> 1;
if (A[m] == who) return m;
int v = -1;
if (A[m] < who)
{
if (m != st) v = cauta(st, m-1);
if (v == -1) v = cauta(m+1, dr);
}
else
{
v = cauta(m+1, dr);
if (v == -1 && m != st) v = cauta(st, m-1);
}
return v;
}
atunci cand vectorul e sortat crescator e cautare binara, se intra doar pe cate una dintre cele 2 ramuri, cu conditia ca elementul sa si existe in vector
in cazul cel mai defavorabil la fiecare apel al functiei se analizeaza exact un element din vector => O(N)