def binary_search_recursive(array, item, left=None, right=None):
    """Return index of item in sorted array or none if item not found."""
    # BASE CASE: left and right point to same index
    if left == right and left is not None:
        # not in array
        if left == len(array):
            return None
        # check if index is item
        if array[left] == item:
            return left
        else:
            return None
    # if left and right are none set to length arr
    if left is None:
        left = 0
    if right is None:
        right = len(array)
    # set the middle index
    mid = (left + right) // 2
    # check if mid index is item
    if array[mid] == item:
        return mid
    # check if index's item is greater
    elif array[mid] > item:
        # nothing left to search
        if left == mid:
            return None
        # change right to middle index - 1
        return binary_search_recursive(array, item, left, mid - 1)
    # check if item at index less than
    elif array[mid] < item:
        # nothing left to search
        if right == mid:
            return None
        # change left to middle index + 1
        return binary_search_recursive(array, item, mid + 1, right)