Java二进制搜索递归

时间:2014-02-27 20:35:35

标签: java compiler-errors binary-search

我必须实现二进制搜索方法,该方法查找值是否在数组中。我必须使用递归。

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;
            }
        }
    }

我收到以下错误:

  

缺少退货声明

感谢。

3 个答案:

答案 0 :(得分:2)

这是因为其中一条可能的执行路径可能导致没有返回语句:在上一个if中,如果条件l<=rtrue,则不返回任何内容(你只能递归地调用你的方法。)

您可能希望在递归调用之前添加return关键字:

return searchBin(array,x,l,r);

这样,你的方法将(在这种情况下)返回递归调用返回的任何内容。

答案 1 :(得分:2)

这是因为错误表明“并非所有路径都返回值”。

这是可能的问题:

searchBin(array,x,l,r);

修复将是:

return searchBin(array,x,l,r);

答案 2 :(得分:1)

无法返回您对

进行递归调用的地方
searchBin