1. 程式人生 > >java二分查詢的遞迴實現

java二分查詢的遞迴實現

遞迴:方法可以呼叫自己

編寫遞迴程式碼時有一下三點:

  1.  遞迴總有一個最簡單的情況——方法的第一條語句總是一個包含return的條件語句。
  2. 遞迴呼叫總是去嘗試解決一個規模更小的子問題,這樣遞迴才能收斂到最簡單的情況。在下面的程式碼中,第四個引數和第三個引數的差值一直在縮小。
  3. 遞迴呼叫的父問題和嘗試解決的子問題之間不應該有交集。在下面的程式碼中,兩個子問題各自操作的陣列部分是不同的。
public static int rank(int key,int[] a)
{   return rank(key, a, 0, a.length - 1); }

public static int rank(int key, int[] a, int lo, int hi)
{  //如果key存在於a[]中,它的索引不會小於lo且不會大於hi

   if(lo > hi) return -1;
   int mid = lo + (hi - lo) /2;
   if      (key < a[mid]) return rank(key, a, lo, mid - 1);
   else if (key > a[mid]) return rank(key, a, mid+1, hi);
   else                   return mid;
}