Computers and Technology
Consider the following method, which implements a recursive binary search. /** Returns an index in arr where the value x appears if x appears* in arr between arr[left] and arr[right], inclusive;* otherwise returns -1. * Precondition: arr is sorted in ascending order. * left >= 0, right < arr. Length, arr. Length > 0*/public static int bSearch(int[] arr, int left, int right, int x){if (right >= left){int mid = (left + right) / 2;if (arr[mid] == x){return mid;}else if (arr[mid] > x){return bSearch(arr, left, mid - 1, x);}else{return bSearch(arr, mid + 1, right, x);}}return -1;}The following code segment appears in a method in the same class as bSearch. int[] nums = {10, 20, 30, 40, 50};int result = bSearch(nums, 0, nums. Length - 1, 40);How many times will the bSearch method be called as a result of executing the code segment, including the initial call?11A22B33C44D55E