二分查找估算某个数的算术平方根

分享 leeston9 ⋅ 于 2020-07-02 14:54:14 ⋅ 最后回复由 leeston9 2020-07-07 09:42:08 ⋅ 2384 阅读

之前童鞋遇到一个阿里的面试题,在不使用map函数的情况下怎么估算根号3的近似值,我同学没有回答上来,他把问题告诉了我,我使用了简单的二分查找法解决了这个问题

 //使用二分查找法估算某个值的根号
    public static double calcTest(double left, double right, double targetNum, double accuracy) {
        double mid = (left + right) / 2;
        //中间值小于目标值时
        if (mid * mid < targetNum) {
            //如果二分法精度不满足退出条件,则向右递归运算
            if ((targetNum - mid * mid) >= accuracy) {
                return calcTest(mid, right, targetNum, accuracy);
            }
            //精度满足,返回查找结果(估算值)
            return mid;
            //中间值大于目标值时
        } else if (mid * mid > targetNum) {
            //如果二分法精度不满足退出条件,则向左递归运算
            if ((mid * mid - targetNum) >= accuracy) {
                //递归逻辑
                return calcTest(left, mid, targetNum, accuracy);
            }
            //精度满足,返回查找结果(估算值)
            return mid;
        }
        //如果中间值刚好等于目标值,返回精确值
        return mid;
    }
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-leeston9,http://hainiubl.com/topics/75175
回复数量: 2
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-07-02 15:01:35

    挺有意思,应该是不用math函数吧。有些思考性,来个小红包。

  • leeston9 上海工程技术大学自动化专业2019级毕业生
    2020-07-07 09:42:08

    @青牛 是的 写遛弯儿了:blush:

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter