在递归二进制搜索中处理分段错误

时间:2013-09-15 18:32:53

标签: 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)
        return recursive_binary_search(A, beg, mid - 1, key);
    else
        return recursive_binary_search(A, mid + 1, end, key);
}

2 个答案:

答案 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;

修复了问题。