Description:
Implement int sqrt(int x).
Compute and return the square root of x, where x is guaranteed to be a non-negative integer.
Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.
Example 1:
Input: 4
Output: 2
Example 2:
Input: 8
Output: 2
Explanation:
The square root of 8 is 2.82842…, and the decimal part is truncated, 2 is returned.
题意:模拟函数Sqrt(x)的功能,求一个数的开平方(取整数);
解法:Java中函数sqrt(x)所使用的原理是“牛顿迭代法”
- 对于我们要求的数r的平方根x,有等式
,即:
- 利用牛顿迭代法我们可以得到:
- 在迭代的开始阶段,x的值可以取r,迭代的结束条件是 ,因此这里我们使用了一个误差
class Solution {
public int mySqrt(int x) {
double err = 1e-7;
double result = x;
while(Math.abs(result - x/result) > err){
result = (result + x/result)/2.0;
}
return (int)result;
}
}