自分のプログラムにバイナリ検索を実装しましたが、何らかの理由で私のreturn文の1つを完全に無視します。次のように問題のreturn文は次のとおりです。私は、Eclipseのデバッガを使用する場合return array[mid];
再帰呼び出しが返されませんか?
、私は、それはif文を入力して見てリターンを実行し、それは次の2行をスキップすることができます: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
これは短くて完全なコンソールアプリで実証できますか? –