我必须实现二进制搜索方法,该方法查找值是否在数组中。我必须使用递归。
public static boolean searchBin(int[] array, int x, int l, int r) {
int center;
center =(l+r) / 2;
if ( x > array[center] )
{
l = center+1;
}
else
{
r = center-1;
}
if ( array[center] == x )
{
return true;
}
else
{
if ( l<=r )
{
searchBin(array,x,l,r);
}
else
{
return false;
}
}
}
我收到以下错误:
缺少退货声明
感谢。
答案 0 :(得分:2)
这是因为其中一条可能的执行路径可能导致没有返回语句:在上一个if
中,如果条件l<=r
为true
,则不返回任何内容(你只能递归地调用你的方法。)
您可能希望在递归调用之前添加return
关键字:
return searchBin(array,x,l,r);
这样,你的方法将(在这种情况下)返回递归调用返回的任何内容。
答案 1 :(得分:2)
这是因为错误表明“并非所有路径都返回值”。
这是可能的问题:
searchBin(array,x,l,r);
修复将是:
return searchBin(array,x,l,r);
答案 2 :(得分:1)
无法返回您对
进行递归调用的地方searchBin