A user suggested this solution:
static int binarySearch(int[] arr, int start, int end, int key) {
if (start > end) return -1;
int mid = start + (end - start) / 2;
if (arr[mid] == key) return mid;
if (arr[mid] >= arr[start]) {
if (key >= arr[start] && key < arr[mid]) return binarySearch(arr, start, mid - 1, key);
return binarySearch(arr, mid + 1, end, key);
} else {
if (key <= arr[end] && key > arr[mid]) return binarySearch(arr, mid + 1, end, key);
return binarySearch(arr, start, mid - 1, key);
}
}