69. Sqrt(x) - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/sqrtx/
目录
方法二:通过其它的数学函数代替平方根函数得到精确结果,取整数部分作为答案;
方法一:牛顿迭代法
class Solution {
public:
int mySqrt(int x) {
double result=(double)x;
double shang=result;
int a=x;
if(x==0){return 0;}
while(1){
shang=result;
result=(result*result+x)/(2*result);
if(fabs(result - shang) < 1e-7) {
return result;
break;
}
}
return result;
}
};
所以并不限于求解算术平方根这一道题,对于其他的球根题目也可以使用。
重点是找好初始值以及确定在什么时候结束迭代。
对于这个题目来说,初始值的选择要防止使最后的结果成为负根,迭代结束条件根据题目要求精度进行选择。
PS:求取绝对值
abs( )主要用于对求整数的绝对值,而fabs()主要是求精度要求更高的double ,float 型的绝对值。
方法二:通过其它的数学函数代替平方根函数得到精确结果,取整数部分作为答案;
方法三:二分法查找