0

如何通过递归二进制搜索来防止分段错误,该搜索在数组中找不到它正在寻找的数字。

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);
}
4

2 回答 2

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);
}
于 2013-09-15T18:36:49.033 回答
0

原来我忘记()mid.

将定义更正为

int mid = (beg + end) / 2;

解决了这个问题。

于 2013-09-15T18:41:21.940 回答