def bin_search(nums, target, left, right): """ Search the 'target' from the list 'nums' nums: a list of sorted numbers (could be strings as well) left: starting index of the list right: ending index of the list """ if left > right: # not found return False mid = (left + right) // 2 if nums[mid] == target: return True elif nums[mid] < target: # search for upper half left = mid + 1 return bin_search(nums, target, left, right) else: right = mid -1 # search for lower half return bin_search(nums, target, left, right) nums = [2, 5, 6, 7, 9, 10, 12] print(bin_search(nums, 2, 0, len(nums)-1)) # True print(bin_search(nums, 12, 0, len(nums)-1)) # True print(bin_search(nums, 6, 0, len(nums)-1)) # True print(bin_search(nums, 22, 0, len(nums)-1)) # False print(bin_search(nums, 0, 0, len(nums)-1)) # False