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;
}
}
}
韶音科技公司氛围 647人发布
