[英]Java binary search recursive
我必须实现二进制搜索方法,该方法查找值是否在数组中。 我必须使用递归。
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;
}
}
}
我收到以下错误:
缺少退货单
谢谢。
这是因为一种可能的执行路径可能不会导致任何return语句:在最后一个if
,如果条件l<=r
为true
,则不会返回任何内容(只能递归地调用您的方法)。
您可能要在递归调用之前添加return
关键字:
return searchBin(array,x,l,r);
这样,您的方法将(在这种情况下)返回任何递归调用返回的结果。
这是因为错误提示“并非所有路径都返回值”。
这是可能的问题:
searchBin(array,x,l,r);
解决方法是:
return searchBin(array,x,l,r);
没有递归调用的返回
searchBin
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.