题解 | #特殊的产奶量#
特殊的产奶量
https://www.nowcoder.com/practice/7780f80e7ece45928c7c138a20fede91
import java.math.BigDecimal;
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param x int整型
* @return string字符串
*/
public String mySqrt (int x) {
// write code here
double res;
//求平方根使用二分法逼近
// res = DichotomySqrt(x);
//牛顿迭代法
res = SqrtByNewton(x);
//保留两位小数,删除多余的小数位
BigDecimal bigDecimal = new BigDecimal(res).setScale(2, BigDecimal.ROUND_DOWN);
return bigDecimal.toString();
}
/**二分法求平方根 */
private double DichotomySqrt(int x) {
double mid, last;
double low, up;
low = 0; //下边界
up = x; //上边界
mid = (low + up) / 2;
do {
if (mid * mid > x) up = mid;
else low = mid;
last = mid;
mid = (low + up) / 2;
} while (Math.abs(mid - last) > 0.001); //精度
return mid;
}
/**牛顿迭代法
* 不断用(x,f(x))的切线来逼近方程x^2-a=0的根
*/
private double SqrtByNewton(int x){
if(x==0) return 0;
double val = x;//最终
double last;//保存上一个计算的值
do
{
last = val;
val =(val + x/val) / 2;
}while(Math.abs(val-last) > 0.001);
return val;
}
}
面试高频TOP202 文章被收录于专栏
面试高频TOP202题解
网易游戏公司福利 555人发布