题解 | #求解立方根#

求解立方根

http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

二分法

注意结果精度只保留一位 和 输入为负数时



import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
               Scanner scanner = new Scanner(System.in);
        double input = scanner.nextDouble();

        double num= input>0? input:-input; //负数 当正数来处理

        double bottom = 0;
        double top = 0;
        while (top * top * top < num) {  // 比如 5 介于 1^3  和 2^3之间
            top++;
        }
        bottom = top - 1;

        double mid = bottom + (top - bottom) / 2;
        double mul = mid * mid * mid;

        while(top - bottom > 0.1){  // 因为只保留一位小数
            if (mul > num) {
                top = mid;
            } else if (mul < num) {
                bottom = mid;
            }

            mid = bottom + (top - bottom) / 2;
            mul = mid * mid * mid;
        }

        
        if(input<0){// 原数为负,结果也应该为负
            mid=-mid;
        }
        System.out.println(String.format("%.1f",mid));  //  12  => 2,3      -5 ==> -1.7

    }
}

全部评论
代码貌似有点问题,输入3.375(1.5^3),死循环。二分法while中的代码没有判断mul=num的情况
3 回复 分享
发布于 2022-05-27 20:05
66666666666
点赞 回复 分享
发布于 2022-03-23 22:54
这才是不用库 6666
点赞 回复 分享
发布于 2022-04-07 01:31

相关推荐

03-05 19:06
Java
如题ACM/ICPC奖牌有用吗,如果是区域赛银牌作用是多大呢?
KalznAsawind:没用,按照我秋招的感觉,没任何作用,不如实习一根。最大的用处是华为给我免了笔试和一轮面,其他没吊用,最多加个印象分。
点赞 评论 收藏
分享
02-23 00:10
湖南大学 C++
点赞 评论 收藏
分享
xxxxOxo:这公司幽默得很,要了简历半天一点动静都没有,过一会就给你发个邮件让你做测试,做完又没后文了,纯溜人
点赞 评论 收藏
分享
评论
20
4
分享

创作者周榜

更多
牛客网
牛客企业服务