Найти корень методом бинарного поиска 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

→ Ссылка