我试图递归地实现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");
}
答案 0 :(得分:0)
在代码中使用指针有几个非常基本的问题。如果没有为您修复代码,我会给您一个提示:
尝试将medel
转换为指针到中间元素。这可能有助于解决一些混乱。