我在程序中實現了一個二進制搜索,但由於某種原因,它完全忽略了我的一個返回語句。返回語句如下:return array[mid];
遞歸調用不返回?
當我使用Eclipse的調試器時,我可以看到它輸入if語句,運行返回,然後跳到下面兩行: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
你能在很短,但完整的控制檯應用程序證明這一點? – 2012-03-14 22:13:13