欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

求解立方根

程序员文章站 2024-03-22 23:13:28
...

https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&tPage=6&rp=&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking

 

一、题目描述

不使用库函数,计算一个浮点数的立方根,要求返回的立方根也是浮点数,并且只保留一位小数位

 

二、代码实现

1、暴力法

先得到最后一个立方小于等于input的整数,然后再一次次加0.1,找到第一个立方大于input的浮点数 i,然后根据情况打印 i 或者 (i-0.1)即可。

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        while (sc.hasNext()) {
            double input = sc.nextDouble();
            
            double i = 0.0;
            for (i=0; i<input/2; i++) {
                if (i*i*i <= input && (i+1)*(i+1)*(i+1) > input) {
                    break;
                }
            }
            
            while (i*i*i <= input) {
                i += 0.1;
            }
            
            //取与input相差最小的那一个
            if (Math.abs((i-0.1)*(i-0.1)*(i-0.1)-input) < Math.abs(i*i*i-input)) {
                System.out.println(String.format("%.1f", i-0.1));
            } else {
                System.out.println(String.format("%.1f", i));
            }
        }
    }
    
}

2、牛顿迭代法