title: Binary Search
signature: binary_search <- function(arr, l, r, x) {
source_py: def binary_search(arr, l, r, x):
      if (r >= l):
          mid = (l + ((r - l) // 2))
          if (arr[mid] == x):
              return mid
          elif (arr[mid] > x):
              return binary_search(arr, l, (mid - 1), x)
          else:
              return binary_search(arr, (mid + 1), r, x)
      else:
          return (- 1)
source_cpp: int binary_search(vector<int> arr, int l, int r, int x) {
    if ( r >= l ) {
      int mid = l + ( r - l ) / 2;
      if ( arr [ mid ] == x ) return mid;
      if ( arr [ mid ] > x ) return binary_search ( arr, l, mid - 1, x );
      return binary_search ( arr, mid + 1, r, x );
    }
    return - 1;
  }