code: public class BinarySearchRecursive {
  
      public static int binarySearch(int[] haystack, int needle, int lo, int hi) {
          if (hi < lo) {
              return -1;
          }
          int guess = (hi + lo) / 2;
          if (haystack[guess] > needle) {
              return binarySearch(haystack, needle, lo, guess - 1);
          } else if (haystack[guess] < needle) {
              return binarySearch(haystack, needle, guess + 1, hi);
          }
          return guess;
      }
  
      public static void main(String[] args) {
          int[] haystack = {1, 5, 6, 7, 8, 11};
          int needle = 5;
  
          int index = binarySearch(haystack, needle, 0, haystack.length);
  
          if (index == -1) {
              System.out.println(needle + " is not in the array");
          } else {
              System.out.println(needle + " is at index " + index);
          }
      }
  }
  