溢出二进制搜索递归c ++

时间:2013-01-26 15:16:19

标签: c++ binary-search

我试图递归地实现binarySerach,但我得到了堆栈溢出。

首先我有find函数,它有3个参数。然后我在main中调用此函数并从数组中传递adresess。坚果我有堆栈溢出!

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

1 个答案:

答案 0 :(得分:0)

在代码中使用指针有几个非常基本的问题。如果没有为您修复代码,我会给您一个提示:

尝试将medel转换为指针到中间元素。这可能有助于解决一些混乱。