多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### Leetcode069 —— X的平方根 实现`int sqrt(int x)`函数。 ``` 输入: 4 输出: 2 输入: 8 输出: 2 说明: 8 的平方根是 2.82842...由于返回类型是整数,小数部分将被舍去。 ``` 方法: 二分查找 ``` const mySqrt = x => { let [low, high] = [0, x]; while (low <= high) { const mid = (low + high) >> 1; if (mid * mid > x) { high = mid - 1; } else if (mid * mid < x) { low = mid + 1; } else { return mid; } } return high; }; ``` 方法: 牛顿-拉弗森迭代法 ![](https://img.kancloud.cn/c0/c7/c0c75f002e8b61c2020b417527e163be_533x198.png) ``` x^2 = n x^2 - n = 0 f(x) = x^2 - n f(x)' = 2x xn+1 = xn - f(xn) / f'(xn) ---> xn1 = x - (x*x-n) / (2*x) ``` ``` var mySqrt = function(x) { if(x === 0) { return 0 } return Math.floor(sqrt(x)(x)) }; function sqrt(x) { let origin = x; return function inner(x) { // xn+1 = xn - f(xn) / f'(xn) let xn1 = x - (x*x-origin) / (2*x) if(x - xn1 <= 0.1) { // 精度问题 return xn1 } return inner(xn1) } } ```