快速开平方

问题实现 int sqrt(int x);
计算和返回x的平方根。
学过数值分析的都知道牛顿迭代法



令f(x) = x 2-a;
那么上式就变成:

x n+1 =x n-(x n 2-a)/(2*x n)=(x n+a/x n)/2

实现的代码如下,简单优美,收敛快。

public  class Solution {
     public  int sqrt( int x) {
         if(x==0)  return 0;
         if(x<=2)  return 1;
         int result = x/2;
         while( true){
             int next = (result+x/result)/2;
             if(next>=result){
                 break;
            }
             else{
                result = next;
            }
        };
         return result;
    }
}




你可能感兴趣的:(快速开平方)