js实现sqrt(num)
实现 sqrt(num) 的方法
使用 Math.sqrt()
JavaScript 内置的 Math.sqrt() 方法可以直接计算平方根:
const num = 16;
const result = Math.sqrt(num); // 返回 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;
}
const result = sqrtNewton(25); // 返回约 5.000000000016778
二分查找法
二分查找法通过逐步缩小范围逼近平方根:
function sqrtBinarySearch(num, precision = 0.0001) {
let low = 0;
let 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;
}
const result = sqrtBinarySearch(9); // 返回约 3.000091552734375
指数与对数方法
利用数学恒等式 sqrt(num) = num^(1/2),通过 Math.pow() 或对数计算:
function sqrtPow(num) {
return Math.pow(num, 0.5);
}
function sqrtLog(num) {
return Math.exp(0.5 * Math.log(num));
}
const result1 = sqrtPow(36); // 返回 6
const result2 = sqrtLog(49); // 返回 7
注意事项
- 输入验证:确保
num是非负数,否则返回NaN或抛出错误。 - 精度控制:牛顿迭代法和二分查找法需指定
precision参数控制精度。 - 性能:内置
Math.sqrt()性能最优,手动实现适用于特定场景(如教学或限制环境)。







