不使用库函数求一个数的平方根 - JavaScript

javascriptweb developmentfront end technologyobject oriented programming更新于 2025/12/31 21:32:17

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

示例

以下是代码 −

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);
   }
}
// 函数求 n 的平方根
const findSqrt = num => {
   let i = 1;
   const found = false;
   while (!found){
      // 如果 n 是完全平方数
      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));

输出

在控制台中将产生以下输出 −

5.744562149047852

理解代码

我们从 i = 1 开始循环。

如果 i * i = n,则返回 i,因为 n 是平方根为 i 的完全平方数,否则我们找到最小的 i,使 i * i 刚好大于 n。

现在我们知道 n 的平方根位于区间 i – 1 和 i 内。然后我们使用二分搜索算法来找到平方根。


相关文章


有用资源