题目描述
•计算一个数字的立方根,不使用库函数
详细描述:
•接口说明
原型:
public static double getCubeRoot(double input)
输入:double 待求解参数
返回值:double 输入参数的立方根,保留一位小数
输入描述:
待求解参数 double类型
输出描述:
输入参数的立方根 也是double类型
示例1
输入
216
输出
6.0
利用牛顿迭代法求解立方根,牛顿迭代求解公式(1)所示,令键入值为y,定义函数
,则本题的迭代公式如(2),直至等式(3)成立停止迭代。
JAVA实现
1.
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
double d=scanner.nextDouble();
double i = 0;
while(i*i*i<d)
{
i+=0.05;
}
i-=0.05;
System.out.println(String.format("%.1f", i));
}
}
2.
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
double d=scanner.nextDouble();
double i = 1.0;
for (; Math.abs(Math.pow(i, 3) - d) > 0.001; i = i - ((Math.pow(i, 3) - d) / (3 * Math.pow(i, 2))));
System.out.println(String.format("%.1f", i));
}
}
Python实现
1.
d=float(input())
i=0
while(i*i*i<d):
i+=0.05
print("%.1f"%i)
2.
d=float(input())
i=1.0
while(abs(pow(i, 3) - d) > 0.001):
i = i - ((pow(i, 3) - d) / (3 * pow(i, 2)))
print("%.1f"%i)
C++实现
1.
#include<stdio.h>
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double d;
cin >> d;
double i=0.0;
while (i*i*i<d)
{
i += 0.05;
}
cout << fixed << setprecision(1)<< i << endl;
return 0;
}
2.
#include<stdio.h>
int main()
{
double d;
scanf("%lf", &d);
double i=0.0;
while (i*i*i<d)
{
i += 0.05;
}
printf("%.1lf", i);
return 0;
}
3.
#include<stdio.h>
#include<math.h>
int main()
{
double d;
scanf("%lf", &d);
double i=1.0;
for (; fabs(pow(i, 3) - d) > 1e-3; i = i - ((pow(i, 3) - d) / (3 * pow(i, 2))));
printf("%.1lf", i);
return 0;
}