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 に答える