public static int BinSrch(Comparable a[], int i, int l, Comparable x) // Given an array a[i:l] of elements in nondecreasing // order, 1<=i<=l, determine whether x is present, and // if so, return j such that x == a[j]; else return 0. { if (l==i) { // If Small(P) if (x==a[i]) return i; else return 0; } else { // Reduce P into a smaller subproblem. int mid = (i+l)/2; if (x == a[mid]) return mid; else if (x < a[mid]) return BinSrch(a,i,mid-1,x); else return BinSrch(a,mid+1,l,x); } }