C++ 为什么不是';return语句是否正在执行?二进制搜索

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){

该算法找到结果并测试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){
            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);