繁体   English   中英

Java二进制搜索递归

[英]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<=rtrue ,则不会返回任何内容(只能递归地调用您的方法)。

您可能要在递归调用之前添加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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM