def binarySearch(L, k, left, right): # Base case 1: element not found if left > right: return -1 mid = (left + right)/2 # index of the middle element # Base case 2: element found at the midpoint if L[mid] == k: return mid # element is found at mid, so return this index # Recursive cases: we search in left half or right half elif L[mid] < k: # look for element in right half return binarySearch(L, k, mid+1, right) elif L[mid] > k: # look for element in the left half return binarySearch(L, k, left, mid-1)