#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x)
{
printf("binarySearch called with l = %d, r = %d, x = %d\n", l, r, x);
if (r >= 1) {
int mid = l + (r-1)/2;
printf("Calculated mid = %d, arr[mid] = %d\n", mid, arr[mid]);
if (arr[mid] == x) {
printf("Element found at index %d\n", mid);
return mid;
}
if (arr[mid] > x) {
printf("Searching left subarray\n");
return binarySearch(arr, l, mid + 1, x);
}
printf("Searching right subarray\n");
return binarySearch(arr, mid + 1, r, x);
}
printf("Element not found\n");
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array\n");
else
printf("Element is present at index %d\n", result);
return 0;
}