首页 > 其他 > 详细

[leedcode 69] Sqrt(x)

时间:2015-07-13 23:58:13      阅读:413      评论:0      收藏:0      [点我收藏+]

Implement int sqrt(int x).

Compute and return the square root of x.

public class Solution {
    //本题利用了牛顿迭代法:设r是f(x) = 0的根(x^2-k=f(x)),选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0     //)+f‘(x0)(x-x0),求出L与x轴交点的横坐标 x1 = x0-f(x0)/f‘(x0),称x1为r的一次近似值。

    //过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x轴交点的横坐标 x2 = x1-f(x1)/f‘(x1),称x2为r的二次近似值。重复以上过程,得r的近似值     //序列,其中x(n+1)=x(n)-f(x(n))/f‘(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。
    //根据牛顿迭代的原理,可以得到以下的迭代公式:X(n+1)=[X(n)+p/Xn]/2
    //还可以用常识性知识考虑,x=(x+k/x)/2
    
    //本题注意点:
    //1.返回结果要先声明为double
    //2.需要检查参数的正负
    //3.注意1e-6的写法
    
    


    public int mySqrt(int x) {
        if(x<=0) return 0;
        double res=1.0;
        while(Math.abs(res*res-x)>1e-6){
            res=(res+x/res)/2;
        }
        return (int)res;
    }
}

 

[leedcode 69] Sqrt(x)

原文:http://www.cnblogs.com/qiaomu/p/4644085.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!