LeetCode:Sqrt(x)
Implement int sqrt(int x)
.
Compute and return the square root of x.
面试时需要考虑x是否小于0.
分析:牛顿法,先假设一个初始解res(本文设为1),然后以抛物y = x^2-c(这里的c相当于题目中的x)上的点(res, res^2-c)为切点作切线,让res = 切线与x轴的交点,一直循环上面的操作直到前后两次的解相同。 本文地址
class Solution { public: int sqrt(int x) { double res = 1.0, tmpres = 0.0; while(int(res) - int(tmpres)) { tmpres = res; //res / 2.0 + x /(2.0 * res)为切线与x轴的交点 res = res / 2.0 + x /(2.0 * res); } return (int)res; } };
对于评论中caichunli999提出的该方法的正确性证明如下:
这篇博客给出了14种求平方根解法:http://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi
【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3471926.html