Recursive Binary Search
The recursive implementation of binary search is very similar to the iterative approach. However, this time we also include both start
and end
as parameters, which we update at each recursive call. The pseudocode for a recursive binary search is shown below.
1function BINARYSEARCHRECURSE(ARRAY, VALUE, START, END)
2 # base case
3 if START > END then
4 return -1
5 end if
6 MIDDLE = INT((START + END) / 2)
7 if ARRAY[MIDDLE] == VALUE then
8 return MIDDLE
9 else if ARRAY[MIDDLE] > VALUE then
10 return BINARYSEARCHRECURSE(ARRAY, VALUE, START, MIDDLE – 1)
11 else if ARRAY[MIDDLE] < VALUE then
12 return BINARYSEARCHRECURSE(ARRAY, VALUE, MIDDLE + 1, END)
13 end if
14end function
The recursive version moves the loop’s termination condition to the base case, ensuring that it returns -1 if the start
index is greater than the end
index. Otherwise, it performs the same process of calculating the middle
index and checking to see if it contains the desired value
. If not, it uses the recursive calls on lines 10 and 12 to search the first half or second half of the array, whichever is appropriate.