Write a recursive function named binary_search
that accepts a sorted list of integers and an integer target value and uses a recursive binary search algorithm to find and return an index at which that target value is found in the list.
If the target value is not found in the list, return -1
.
The following code shows some example calls and their expected return values:
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
a = [-4, 2, 7, 10, 15, 20, 22, 25, 30, 36, 42, 50, 56, 68, 85, 92, 103]
index = binary_search(a, 42) # 10
index = binary_search(a, 66) # -1
You should assume that the list's elements are already sorted you do not need to handle the case of an unsorted list.
Your function must be recursive and must use a binary search algorithm.
Do not use loops or auxiliary data structures.