"""Recursive version of binary_search""" def binary_search(a, value) : """Returns the index of an occurrence of the given value in the given array, or -1 if not found.""" return binary_search_helper(a, value, 0, len(a) - 1) # Recursive helper to implement search. def binary_search_helper(a, value, left, right) : if (left > right) : return -1 # not found else : mid = (left + right) / 2 if (a[mid] == value) : return mid # found it! elif (a[mid] < value) : # middle element too small; search right half return binary_search_helper(a, value, mid+1, right) else : # middle element too large; search left half return binary_search_helper(a, value, left, mid-1) print binary_search(range(10000), 20) print binary_search(range(1, 100, 2), 20)