【发布时间】:2012-03-15 06:14:05
【问题描述】:
我在我的程序中实现了二进制搜索,但由于某种原因,它完全忽略了我的一个返回语句。有问题的return语句如下:return array[mid];
当我使用 Eclipse 的调试器时,我可以看到它进入 if 语句,运行 return,然后它跳到以下两行:binarySearch(array, key, low, mid - 1);,return 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
【问题讨论】:
-
你能在一个简短但完整的控制台应用程序中演示这一点吗?
标签: java recursion binary-search