def binary_search_work(A, key, left, right):
    """Binäre Suche mit Rekursion.

    Args:
        A (list): Menge A
        key (object): Element das gefunden werden soll.
        left (int): Linke Grenze der Menge.
        right (int): Rechte Grenze der Liste.

    Returns:
        Index i, sodass 0 <= i < len(A) und A[i] == key, oder -1 falls key nicht auftritt.
    """
    if right < left:
        # key wurde nicht gefunden
        return -1

    middle = int((left + right) / 2)
    if key < A[middle]:
        # key vermutlich in der linken seite -> anpassen der rechten grenze
        return binary_search_work(A, key, left, middle-1)
    if key > A[middle]:
        # key vermutlich in der rechten seite -> anpassen der linken grenze
        return binary_search_work(A, key, middle+1, right)

    # key wurde gefunden
    return middle