如何通过递归二进制搜索来防止分段错误,该搜索无法找到它在数组中查找的数字。
int recursive_binary_search(int A[], int beg, int end, int key)
{
if(end < beg)
return -1;
int mid = beg + end / 2;
if(A[mid] == key)
return mid;
else if(A[mid] > key)
return recursive_binary_search(A, beg, mid - 1, key);
else
return recursive_binary_search(A, mid + 1, end, key);
}
答案 0 :(得分:1)
以下代码可能就足够了,
int recursive_binary_search(int A[], int beg, int end, int key)
{
if(end < beg)
cout<<"\nKey not Found";
int mid = beg + end / 2;
if(A[mid] == key)
return mid;
else if(A[mid] > key)
return recursive_binary_search(A, beg, mid - 1, key);
else
return recursive_binary_search(A, mid + 1, end, key);
}
答案 1 :(得分:0)
原来我忘了()
的定义mid
。
将定义更正为
int mid = (beg + end) / 2;
修复了问题。