我们应该实现一个函数,该函数使用二分查找来检查值key
是否在数组中,并给出true或false。使用常量指针进行二进制搜索
我是这样的:
bool binary_search(const int* begin, const int * end, int key){
if(begin < end){
int mid = (end-begin)/2;
if(mid == key){
return true;
}else if (key < mid){
int h = mid-1;
end = &h;
binary_search(begin, end, key);
}else if (mid < key){
int i = mid+1;
begin = &i;
binary_search(begin, end, key);
}
}else{
return false;
}
}
,但它不会给任何输出,而是它给我的错误。
warning: control reaches end of non-void function [-Wreturn-type]
我真的不明白我要做这里,所以有人可以解释我是怎么回事错在这里?
的'binary_search(开始,结束键)'调用应该可能有'在他们面前return'。 – ildjarn
@songyuanyao'end =&h;'是一个错误 - 它应该是'* end = h;'和'* begin = i;' – Rotem
请注意,当代码缩进以匹配逻辑时,名义上是'else'缺少值检查代码和编译器可能会抱怨,因为该路径上没有“返回”。当然,前面的三个条件是“if(key == mid)'和'else if(key mid)',并且这些条件涵盖了所有情况,但编译器可能或可能不,现货第三项测试是多余的。 –