Найти корень методом бинарного поиска JavaScript
Не получается найти корень числа бинарным поиском.
Подскажите, пожалуйста, где ошибка в коде?
function search(num) {
let left = 1;
let right = num - 1;
let mid;
while (left <= right)
mid = (right - left) / 2;
if (mid ** 2 == num) {
return mid;
} else if (mid ** 2 < num) {
right = mid - 1;
} else {
left = mid + 1;
}
}
console.log(search(9));
Ответы (1 шт):
Автор решения: Saimon398
→ Ссылка
Попробуйте такой:
const mySqrt = (number) => {
let ans = 0;
let sqrt = 0;
let e = number;
while (sqrt <= e) {
const middle = Math.trunc((sqrt + e) / 2);
if (middle * middle === number) {
return middle;
}
else if (middle * middle < number) {
sqrt = middle + 1;
ans = middle;
}
else {
e = middle - 1;
}
}
return ans;
};
console.log(mySqrt(4)); // 2