Muito bom post rei, eu também vi busca binária pelo livro do Aditya e no primeiro cap ele ainda não fala de recursividade, mas no 4 ele cita, então eu fiz uma implementação da busca binária, usando recursividade:

const arr = [1,3,8,14,25,29,36,42, 52];

function binarySearch(arr, left, right, value) {
	if(left > right	) {
		console.debug(arr)
		return -1
	}

	let m =  Math.round((left + right) / 2)

	if(arr[m] == value){
		return `index: ${m} value ${arr[m]}`
	}

	if(arr[m] < value) {
		return binarySearch(arr, m + 1, right, value)
	}else {
		return binarySearch(arr, left, m -1, value)
	}
}

console.debug(binarySearch(arr,0, arr.length -1, 42))

Uma coisa legal que vale destacar, é que quando tentei a primeira vez, estava separando o array, e isso faz você perder o index original do item no array, então a sacada do if (chute > item) { alto = meio - 1; } else { baixo = meio + 1; } onde apenas apontamos um novo meio de pesquisa e não fazemos nenhum tipo de alteração no array original é muito boa, e um dos segredos pro algoritmo funcionar corretamente.