Вот как я это реализовал.С кодом psedo, реализованным в комментариях сверху.
Это js bin: https://jsbin.com/womenov/3/edit?js,console Любые отзывы будут высоко оценены.
/**
* Binary Search using Recursion
* p.......q........r : range where p is start, r is end
* Assume the array is sorted.
* Procedure BinarySearchRecursively(ArrayGiven, x, p, r, q = 0)
* if(p > r) return -1
* q = Math.floor((p+r)/2)
* if(x === ArrayGiven[q]) return q
* else if(x > ArrayGiven[q]) set p = q+1
* return BinarySearchRecursively(ArrayGiven, x, q + 1, r)
* else r = q-1 return BinarySearchRecursively(ArrayGiven, x, p, q-1)
*
*/
function BinarySearchRecursively (ArrayGiven, x, p, r, q = 0) {
if (p > r) {
return -1;
}
q = Math.floor((p+r)/2);
if (x === ArrayGiven[q]) {
return q;
}
if (x > ArrayGiven[q]) {
return BinarySearchRecursively(ArrayGiven, x,q+1, r);
}
return BinarySearchRecursively(ArrayGiven, x, p,q-1);
}
const TestArray = [2, 6, 8, 9, 11, 15];
console.log(`Given Element is at position : ${BinarySearchRecursively(TestArray, 2, 0,5)}`);