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);
}
}
我一次又一次地得到同样的错误。经历了很多变化
答案 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);
}
}