def binary_search(arr: list, low: int, high: int, key: int) -> int:
    """Binary search
        ----------
        arr :
            Array to use.
        low : 
            Low value
        high :
            High value
        key : 
            value were looking for.
        
        Returns
        ---------
         int   
            Element of the array.
       
        >>> binary_search([0, 5, 7, 10, 15], 0)
        0
        >>> binary_search([0, 5, 7, 10, 15], 15)
        4
        >>> binary_search([0, 5, 7, 10, 15], 5)
        1
    
    """
    if high < low:
        return -1
        
    # low + (high - low)/2;    
    mid = int((low + high)/2)
    
    if key == arr[mid]:
        return mid
    if key > arr[mid]:
        return binary_search(arr, (mid + 1), high,
                                            key);
    return binary_search(arr, low, (mid -1), key);