控制到达无效功能的结束

时间:2017-06-09 10:01:11

标签: c

bool binary(int value,int values[],int start,int end)
{

    //Binary search
    if(start>end)
        return false;

    int mid=(start+end)/2;

    if(value==values[mid])
            return true;
    else
    {
        if(value>values[mid])
            binary(value,values,mid+1,end);

        else
            binary(value,values,start,mid-1);
    }
}

我一次又一次地得到同样的错误。经历了很多变化

2 个答案:

答案 0 :(得分:1)

您收到此错误,因为函数binary被定义为返回bool值,但并非所有控制路径实际上都包含return - 语句(请注意,else } -path已经输入,代码甚至不会到达任何return语句)。如果不解释您的代码,最有可能解决的问题如下:

bool binary(int value,int values[],int start,int end)
{
    //Binary search
    if(start>end)
        return false;

    int mid=(start+end)/2;

    if(value==values[mid])
            return true;
    else
    {
        if(value>values[mid])
            return binary(value,values,mid+1,end);

        else
            return binary(value,values,start,mid-1);
    }
}

答案 1 :(得分:0)

编译器推断当if条件失败时,没有返回语句。

因此,将return语句结束为binary()函数。喜欢:

bool binary(int value,int values[],int start,int end)
{
        //Binary search 
        if(start>end)
                return false;

        int mid=(start+end)/2;

        if(value==values[mid])
                return true;
        else
        {
                if(value>values[mid])
                        return binary(value,values,mid+1,end);

                else
                        return binary(value,values,start,mid-1);
        }
}