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


 查看9道真题和解析
查看9道真题和解析