C++ 为什么不是';return语句是否正在执行?二进制搜索
该算法找到结果并测试true,但不返回de值并返回-2。有人知道为什么吗?我还没弄明白。 代码如下:C++ 为什么不是';return语句是否正在执行?二进制搜索,c++,recursion,binary-search,C++,Recursion,Binary Search,该算法找到结果并测试true,但不返回de值并返回-2。有人知道为什么吗?我还没弄明白。 代码如下: int recursiveBinarySearch(int* a, int p, int r, int x){ if(p>r){ return -1; }else{ int m = (p+r)/2; cout<<(a[m]==x)<<endl; if(a[m]==x){
int recursiveBinarySearch(int* a, int p, int r, int x){
if(p>r){
return -1;
}else{
int m = (p+r)/2;
cout<<(a[m]==x)<<endl;
if(a[m]==x){
cout<<"entering"<<endl;
return (m+1);
cout<<"wtf?"<<endl;
}else if(x<a[m]){
recursiveBinarySearch(a,p,m-1,x);
}else if(x>a[m]) recursiveBinarySearch(a,m+1, r,x);
}
return -2;
}
当您递归调用
recursiveBinarySearch()
时,您可以使用return
语句调用它,因为如果递归函数返回某个内容,调用递归函数的函数应该返回相同的值
代码应为:
int recursiveBinarySearch(int* a, int p, int r, int x)
{
if(p>r)
return -1;
else
{
int m = (p+r)/2;
cout<<(a[m]==x)<<endl;
if(a[m]==x)
{
cout<<"entering"<<endl;
return (m+1);
cout<<"wtf?"<<endl;
}
else if(x<a[m])
//Added a return statement to both the recurring function call.
return recursiveBinarySearch(a,p,m-1,x);
else if(x>a[m])
//Added a return statement to both the recurring function call.
return recursiveBinarySearch(a,m+1, r,x);
}
return -2;
}
int递归二进制搜索(int*a,int p,int r,int x)
{
如果(p>r)
返回-1;
其他的
{
int m=(p+r)/2;
coutrecursiveBinarySearch
的返回值在递归中被忽略。请尝试写入:
return recursiveBinarySearch(a,p,m-1,x);
想想如果函数进入两个递归调用中的一个,它将返回什么。一旦这些递归调用完成,请查看代码路径。返回语句不存在,因此无法执行。
return recursiveBinarySearch(a,p,m-1,x);