可以采用二分法,获取最大,最小值,求他们的中间值的平方是否大于目标值,等于就直接返回,不等于则继续折半求中间值的平方直到接近目标值为止。
var mySqrt = function(x) { let l = 0, h = x, p = x / 2, lp = p; if(x === 1 || x === 0) return x; do{ if(Math.pow(p,2) > x){ h = p; }else if(Math.pow(p,2) < x){ l = p; }else{ return Math.floor(p); } lp = p; p = (l + h) / 2; }while(Math.abs(p - lp) >= Number.EPSILON); return Math.floor(p); };
Activity
CodeRookie262 commentedon Dec 30, 2020
可以采用二分法,获取最大,最小值,求他们的中间值的平方是否大于目标值,等于就直接返回,不等于则继续折半求中间值的平方直到接近目标值为止。