int BinarySearch(int A[], int p, int r, int value)
{
int q = (p + r) / 2;
if (A[q] == value)
{
return q; //value found
}
if (p == q)
{
return 0; //not found
}
if (A[q] > value)
{
return BinarySearch(A, p, q, value);
}
else
{
return BinarySearch(A, q + 1, r, value);
}
} //binary search ends here
现在,问题在于每当我想搜索数组的最后一个元素时,此代码都会出错。 任何人都可以解释原因吗?
答案 0 :(得分:0)
根据第一个索引p
和最后一个索引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);
}
}