Question
Consider the following method, which implements a recursive binary search. /** Returns an index in arr where target appears, if target appears * in arr
Consider the following method, which implements a recursive binary search.
/** Returns an index in arr where target appears, if target appears
* in arr between arr[low] and arr[high], inclusive;
* otherwise, returns -1.
* Precondition: arr is sorted in ascending order.
* low >= 0, high < arr.length, arr.length > 0
*/
public static int binarySearch(int[] arr, int low, int high, int target)
{
if (low > high)
{
return -1;
}
int middle = (low + high) / 2;
if (target == arr[middle])
{
return middle;
}
else if (target < arr[middle])
{
return binarySearch(arr, low, middle - 1, target);
}
else
{
return binarySearch(arr, middle + 1, high, target);
}
}
The following code segment appears in a method in the same class as binarySearch.
int[] arr = {2, 3, 12, 34, 54};
int result = binarySearch(arr, 0, arr.length - 1, 5);
If the first call to binarySearch is the call in the code segment above, with low = 0 and high = 4, which, if any, of the following shows the values of low and high when binarySearch is called for the third time?
A. low = 0, high = 1
B. low = 0, high = 2
C. low = 1, high = 1
D. low = 2, high = 1
E. The method returns to the calling code segment before the third call to binarySearch.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started