Binary search code not working

can you please tell me where I am wrong, this is my code below

import java.util.*;
public class Main {
public static void main(String args[]) {

Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[] arr = new int[n];
for(int i=0;i<n;i++){

arr[i] = s.nextInt();

}
int m = s.nextInt();

int ans = binarySearch(arr, m , 0 , n-1);

System.out.println(ans);
}

public static int binarySearch( int[] arr , int key  ,int first , int last ){

	int mid = (right-left+1)/2;

	if(arr[mid]==m){
		return mid;
	}
	if(left > right){
		return -1;
	}
	if( arr[mid] > m ){
		binarySearch(arr , m , left , mid-1);
	}else {
		binarySearch(arr , m , mid+1, right);
	}

	return -1;

	 
}

}

int mid = (right-left+1)/2;// where is left and right variable ??

Hey dharmesh ,
import java.util.*;

public class Main {
public static void main(String args[]) {

	Scanner s = new Scanner(System.in);
	int n = s.nextInt();
	int[] arr = new int[n];
	for (int i = 0; i < n; i++) {

		arr[i] = s.nextInt();

	}
	int m = s.nextInt();

	int ans = binarySearch(arr, m, 0, n - 1);

	System.out.println(ans);
}

public static int binarySearch(int[] arr, int key, int first, int last) {

	int mid = (last + first ) / 2;

	if (arr[mid] == key) {
		return mid;
	}
	if (first > last) {
		return -1;
	}
	if (arr[mid] > key) {
		return binarySearch(arr, key, first, mid - 1);
	} else {
	return 	binarySearch(arr, key, mid + 1, last);
	}

	

}

}