Make the search end case based on first index p
and last index r
,
int BinarySearch(int A[], int p, int r, int value)
{
int q = (p + r) / 2;
if( p > r )
{
return 0;
}
if (A[q] == value)
{
return q; //value found
}
if (A[q] > value)
{
return BinarySearch(A, p, q-1, value);
}
else
{
return BinarySearch(A, q + 1, r, value);
}
}