0

binarySerach再帰的に実装しようとしていますが、スタックオーバーフローが発生しました。

まずfind、3つのパラメーターを受け取る関数があります。次に、この関数を呼び出してmain、配列からアドレスを渡します。ナットスタックオーバーフローが発生しました!

bool find( const int x, const int* pBegin, const int* pEnd)
{    
    int medel =((*pBegin) + (*pEnd -1))/2 ;

    if(x == medel)
        return true ;

    else if( x<medel)
    {
        int last = medel -1 ;
        return find(x, pBegin, &last);
    }
    else if( x > medel) 
    {
        int begin = medel +1;
        return find(x, &begin, pEnd);
    }


}// find

void main()
{    
    int arr[10];
    for (int i=0;i<10;++i)
        arr[i] = i;
    bool found = find(3, &arr[0], &arr[10]);
    cout << "hittat = " << found << endl;

    system("pause");
}
4

1 に答える 1

0

コードでのポインターの使用に関しては、いくつかの非常に基本的な問題があります。コードを修正せずに、ヒントを示します。

真ん中の要素medelのポインタに変えてみてください。これは、いくつかの混乱を解決するのに役立つ可能性があります。

于 2013-01-26T15:18:37.427 に答える