求一个数的平方根,有二分查找法,牛顿法,这里主要用牛顿法,将问题转换为 X^2 =a 函数: f(x) = X^2-a; 这是一个非线性方程,非线性方程主要有牛顿法和固定迭代法,这里使用牛顿迭代法,反复迭代知道程序收敛。
class Solution {
public:
int mySqrt(int x)
{
if(x<=0)
{
return 0;
}
double oldx,newx,devf;
newx = x;
do
{
oldx = newx;
newx = (oldx + x/oldx)/2;
}
while(abs(oldx -newx));
return newx;
}
};