华为oj初级 求解立方根

描述
•计算一个数字的立方根,不使用库函数
详细描述:
•接口说明
原型:
public static double getCubeRoot(double input)
输入:double 待求解参数
返回值:double 输入参数的立方根

知识点 循环
运行时间限制 10M
内存限制 128
输入
待求解参数 double类型
输出
输入参数的立方根 也是double类型
样例输入 216
样例输出 6.0

求平方根和立方根,我们一般用牛顿迭代法,下面是对应的公式。
求Y的平方根迭代公式:a(n+1)=(a(n)+Y/a(n))/2,初始化可以令a0 = 1。
求Z的立方根迭代公式:a(n+1)={2a(n)+Z/{[a(n)]^2}}/3,初始化可以令a0 = 1。

#include
#include
#include
using namespace std;
double cube_root(double a, double x0){
    double x1;
    x1 = (2 * x0 + a / (x0*x0)) / 3.0;
    if (fabs(x1 - x0) >= 0.00001){
        return cube_root(a, x1);
    }
    else{
        return x1;
    }
}
int main(){
    int n;
    cin >> n;
    cout << setiosflags(ios::fixed) << setprecision(1) << cube_root(n,1)<< endl;
    return 0;
}

你可能感兴趣的:(华为oj)