输入参数的立方根 也是double类型
思路一:
二分法
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
double input = scanner.nextDouble();
double min = 0;
double max = input;
double mid = 0;
while ((max - min) > 0.000001)
{
mid = (min + max) / 2;
if (mid * mid * mid > input)
max = mid;
else if (mid * mid * mid < input)
min = mid;
else
break;
}
System.out.printf("%.1f\n", mid);
}
}
}
思路二:
牛顿迭代法
点击打开链接
设f(x)=x^3-y, 求f(x)=0时的解x,即为y的立方根。
根据牛顿迭代思想,xn+1=xn-f(xn)/f'(xn)即x=x-(x^3-y)/(3*x^2)
import java.util.*;
public class Main
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
{
double input = scanner.nextDouble();
double x0 = 1;
double x1 = x0 - (x0 * x0 * x0 - input) / (3 * x0 * x0);
while (Math.abs(x1 - x0) > 0.000001)
{
x0 = x1;
x1 = x0 - (x0 * x0 * x0 - input) / (3 * x0 * x0);
}
System.out.printf("%.1f\n", x1);
}
}
}