不使用JavaScript中的Math.sqrt()的平方根函数

我们需要编写一个不带Math.sqrt()函数的,接受数字并计算其平方根的JavaScript函数。

因此,让我们为该函数编写代码-

示例

为此的代码将是-

const square = (n, i, j) => {
   let mid = (i + j) / 2;
   let mul = mid * mid;
   if ((mul === n) || (Math.abs(mul - n) < 0.00001)){
      return mid;
   }else if (mul < n){
      return square(n, mid, j);
   }else{
      return square(n, i, mid);
   }
}
// Function to find the square root of n
const findSqrt = num => {
   let i = 1;
   const found = false;
   while (!found){
      // If n is a perfect square
      if (i * i === num){
         return i;
      }else if (i * i > num){
         let res = square(num, i - 1, i);
         return res;
      };
      i++;
   }
}
console.log(findSqrt(33));

了解代码

我们从i = 1循环过来。如果i * i = n,则返回i,因为n是一个平方根为I的完美平方,否则我们找到i * i大于n的最小i。

现在我们知道n的平方根位于区间i – 1和i。

然后,我们使用二进制搜索算法来找到平方根。

输出结果

控制台中的输出将为-

5.744562149047852