js实现开平方根
使用Math.sqrt方法
JavaScript内置的Math.sqrt方法可直接计算平方根:
const result = Math.sqrt(16); // 返回4
牛顿迭代法
通过近似计算实现开平方根,适合需要自定义精度的情况:
function sqrtNewton(num, precision = 0.0001) {
let guess = num / 2;
while (Math.abs(guess * guess - num) > precision) {
guess = (guess + num / guess) / 2;
}
return guess;
}
// 示例:sqrtNewton(9) 返回约3.000091
二分查找法
在给定范围内通过二分逼近平方根值:
function sqrtBinarySearch(num, precision = 0.0001) {
let low = 0, high = num;
let mid = (low + high) / 2;
while (Math.abs(mid * mid - num) > precision) {
if (mid * mid > num) high = mid;
else low = mid;
mid = (low + high) / 2;
}
return mid;
}
// 示例:sqrtBinarySearch(25) 返回约5.000005
指数运算替代
利用数学恒等式将平方根转换为指数运算:

const sqrtExponent = num => Math.pow(num, 0.5);
// 或使用ES6语法
const sqrtExponent2 = num => num 0.5;
注意事项
- 处理负数输入时建议先取绝对值再计算,或返回复数结果
- 牛顿迭代法和二分法需设置合理的终止条件避免无限循环
- 性能测试表明
Math.sqrt比手动实现的算法快约10-100倍


