1 class Solution {
 2 public:
 3     int mySqrt(int x) {
 4         double pre = x;
 5         double cur = 1;
 6         while(abs(cur - pre) >= 1){
 7             pre = cur;
 8             cur = (cur + x/cur)/2;
 9         }
10         return cur;
11     }
12 };

使用牛顿法,这里值得注意的是,由于函数特性,和牛顿法的逼近原理,答案最终一定是从目标点右侧逼近答案。

所以这里在迭代过程中,两次迭代值之间误差小于1即可返回,向下取整就是答案。

使用这种判定方法,绕过了各种溢出问题,很强势。

posted on 2019-11-26 16:21  高数考了59  阅读(116)  评论(0)    收藏  举报