华为oj之求解立方根

题目: 求解立方根

  • 热度指数:1008 时间限制:1秒 空间限制:32768K

题目描述

•计算一个数字的立方根,不使用库函数

立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n)),其中y0=x. 求给定的x经过n次迭代后立方根的值。

详细描述:

•接口说明

原型:

public static double getCubeRoot(double input)

输入:double 待求解参数

返回值:double 输入参数的立方根

输入描述:
待求解参数 double类型
输出描述:
输入参数的立方根 也是double类型
输入例子:
216
输出例子:
6.0

在线提交网址:
http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&rp=&ru=/ta/huawei&qru=/ta/huawei/question-ranking

已AC代码:

#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;

double getCubeRoot(double input)
{
    if(input == 0) return (double)0;
    double pre = 0;
    double res = 1;
    while(fabs(res-pre) > 0.000001)   // 此处需用math.h中的fabs, 而不是abs
    {
        pre = res;
        res = (2*res + input/(res*res) )/3;   // 迭代公式
    }
    return res;
}

int main()
{
    double in;
    while(cin>>in)
    {
        double res;
        res = getCubeRoot(in);
        printf("%.1f", res);           // 如果需要四舍五入保留1位小数, 最后应该用res+0.05, n位小数则需加5*pow(0.1, n+1)
    }
    return 0;
}

知识复习:
abs()主要用于对求整数的绝对值,在“stdlib.h”(或 <cstdlib>)头文件里面。
而fabs()主要是求精度要求更高的double、float型的绝对值,只在<cmath>头文件里。
两者在只#include<cmath>时都可以使用。

相关链接:
http://blog.csdn.net/lzuacm/article/details/51335995
http://ilovers.sinaapp.com/article/迭代法求平方根和立方根
http://blog.csdn.net/never_cxb/article/details/47734519

大白技术控 CSDN认证博客专家 CSDN博客专家 .NET开发者 计算机硕士
本人个人博客: 极客玩家大白,欢迎关注本人公众号:大白技术控。
本博主大白BravoYeung是985高校计算机硕士,目前任职于一家高科技外企。平时的我是知乎干货答主(知乎上有近4万关注者)和CSDN博客专家。
我的公众号【大白技术控】(ID:DaBaiTech)专注于分享IT前沿技术、干货知识、热点资讯等,同时分享硬核的自媒体赚钱方法、推广技巧和运营实战,最近在发力短视频(微信视频号为主)。有兴趣交流成长的小伙伴可以来撩(微信:iMath7)~
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值