C++ 递归二值搜索中分割错误的处理
如何防止递归二进制搜索在数组中找不到要查找的数字时出现分段错误C++ 递归二值搜索中分割错误的处理,c++,binary-search,C++,Binary Search,如何防止递归二进制搜索在数组中找不到要查找的数字时出现分段错误 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) retu
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);
}
int递归二进制搜索(int A[],int beg,int end,int key)
{
如果(结束键)
返回递归二进制搜索(A,beg,mid-1,key);
其他的
返回递归二进制搜索(A,mid+1,end,key);
}
以下代码可能就足够了
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);
}
int递归二进制搜索(int A[],int beg,int end,int key)
{
如果(结束 结果我忘记了()
中的定义
将定义更正为
int mid = (beg + end) / 2;
解决了这个问题。你处理调用函数的std::exception
吗?让我把那部分去掉。你的mid不是一个中间-beg+end周围缺少的括号“end”是指列表中的最后一个条目,还是像stl一样-是结尾后的条目?如果是后者,你不应该写如果(end,例如,如果A中有一个元素,beg=0,end=1?