标签:c style class blog code java
Implement int sqrt(int x)
.
Compute and return the square root of x.
1. 二分查找
2. 牛顿迭代法
不断用(x,f(x))的切线来逼近方程x^2-a=0的根。根号a实际上就是x^2-a=0的一个正实根,这个函数的导数是2x。
也就是说,函数上任一点(x,f(x))处的切线斜率是2x。那么,x-f(x)/(2x)就是一个比x更接近的近似值。
代入f(x)=x^2-a得到x-(x^2-a)/(2x),也就是(x+a/x)/2。
class Solution { public: int sqrt(int x) { assert(x >= 0); double tmp = x; double exp = 10e-5; while (fabs(tmp * tmp - x) > exp) { tmp = 0.5 * (tmp + x / tmp); } return tmp; } };
Leetcode:sqrt 开方运算,布布扣,bubuko.com
标签:c style class blog code java
原文地址:http://www.cnblogs.com/wwwjieo0/p/3778727.html