Java 递归调用不';你不回来了吗?

Java 递归调用不';你不回来了吗?,java,recursion,binary-search,Java,Recursion,Binary Search,我在程序中实现了一个二进制搜索,但由于某种原因,它完全忽略了我的一个返回语句。所讨论的return语句如下:returnarray[mid] 当我使用Eclipse的调试器时,我可以看到它进入if语句,运行return,然后跳到以下两行:binarySearch(array,key,low,mid-1),返回null 你知道为什么会这样吗 public Entry<K, V> binarySearch(Entry<K,V>[] array, K key, int low,

我在程序中实现了一个二进制搜索,但由于某种原因,它完全忽略了我的一个返回语句。所讨论的return语句如下:
returnarray[mid]

当我使用Eclipse的调试器时,我可以看到它进入if语句,运行return,然后跳到以下两行:
binarySearch(array,key,low,mid-1)
返回null

你知道为什么会这样吗

public Entry<K, V> binarySearch(Entry<K,V>[] array, K key, int low, int high) {
    if(low >= high) {
        Entry<K,V> notFound = new EntryNode<K,V>(null, null);
        return notFound;
    } else {
        int mid = (low + high) / 2;
        if(key.equals(array[mid].getKey()))
            return array[mid];
        else if(comparator.compare(key, array[mid].getKey()) < 0)
            binarySearch(array, key, low, mid - 1);
        else
            binarySearch(array, key, mid + 1, high);
    }   //End else statement
    return null;
}   //End binarySearch method
public Entry二进制搜索(Entry[]数组,K键,int-low,int-high){
如果(低>=高){
Entry notFound=newentrynode(null,null);
返回未找到;
}否则{
int mid=(低+高)/2;
if(key.equals(数组[mid].getKey())
返回数组[mid];
else if(comparator.compare(key,数组[mid].getKey())<0)
二进制搜索(数组、键、低、中1);
其他的
二进制搜索(数组、键、中+1、高);
}//End else语句
返回null;
}//结束二进制搜索方法

您需要
在这两个位置返回binarySearch(..)
,否则它将失败并返回null


您应该能够删除
return null
语句,而无需编译器告诉您函数并不总是返回值。

这是因为您忘记返回内部binarySearch调用的结果。你就这样

binarySearch
    binarySearch
        binarySearch
            return array[mid]
        return null
    return null

你能在一个简短但完整的控制台应用程序中演示这一点吗?