在不使用库函数的情况下查找数字的平方根 - JavaScript
我们需要编写一个 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); } } // 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));
输出
这将在控制台中产生以下输出 -
5.744562149047852
理解代码
我们从 i = 1 开始循环。
如果 i * i = n,则我们返回 i,因为 n 是一个完全平方数,其平方根为 i。否则,我们找到 i * i 刚好大于 n 的最小 i。
现在我们知道 n 的平方根位于区间 i – 1 和 i 之间。然后我们使用二分查找算法来找到平方根。
广告