题解 | #特殊的产奶量#
特殊的产奶量
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题解