ai生成

求解立方根

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

这段代码首先定义了一个calculateCubeRoot方法来计算给定数的立方根。它使用了牛顿迭代法,初始化一个猜测值x,然后不断更新x直至满足精度要求。这里的精度设置为1e-6,意味着当连续两次迭代结果之间的差小于这个值时,认为已经找到了足够精确的解。最后,使用Math.round函数四舍五入结果到一位小数,并返回。

请注意,实际应用中,根据具体需求,精度阈值epsilon和初始猜测值的选择可能需要适当调整以适应不同的情况。此外,由于题目要求保留一位小数,我们在返回结果时进行了四舍五入处理。



import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 示例输入
        double input = scanner.nextDouble();
        System.out.printf("%.1f", calculateCubeRoot(input));
    }

    /**
     * 计算立方根,保留一位小数,不使用库函数。
     * @param s 待求立方根的数
     * @return 计算结果,保留一位小数
     */
    public static double calculateCubeRoot(double s) {
        // 初始猜测值,这里取s的一半作为起点
        double x = s / 2;
        // 设置精度,这里为了保留一位小数,设置足够小的精度阈值
        double epsilon = 1e-6;

        // 牛顿迭代法求解立方根
        while (true) {
            double nextX = (2 * x + s / (x * x)) / 3;
            // 检查是否收敛,即两次迭代结果之差是否小于精度阈值
            if (Math.abs(nextX - x) < epsilon) {
                return Math.round(nextX * 10) / 10.0; // 四舍五入保留一位小数
            }
            x = nextX;
        }
    }
}

全部评论

相关推荐

迷茫的大四🐶:摊牌了,我是25届的,你们也不招我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务