// 二分法求平方根
const mySqrt = (n) => {
if (isNaN(n)) return NaN;
if (n === 0 || n === 1) return n;
var low = 0,
high = n,
pivot = (low + high) / 2,
lastPivot;
do {
if (Math.pow(pivot, 2) > n) {
high = pivot;
} else if (Math.pow(pivot, 2) < n) {
low = pivot;
} else {
return pivot;
}
lastPivot = pivot;
pivot = (low + high) / 2;
}
// 使用Number.EPSILON表示能够接受的最小误差范围
while (Math.abs(pivot - lastPivot) >= Number.EPSILON)
return pivot;
}
console.log(mySqrt(3));