算法题-求立方根

求解立方根

https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&tPage=6&rp=&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking


题目描述

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

详细描述:

•接口说明

原型:

public static double getCubeRoot(double input)

输入:double 待求解参数

返回值:double  输入参数的立方根,保留一位小数


输入描述:

	

待求解参数 double类型

输出描述:

	

输入参数的立方根 也是double类型

示例1

输入

复制
216

输出

复制
6.0



题解

设函数f(x) = x3 - A,若求A的平方根,则有f(x) = 0

由牛顿迭代公式 x = x0 - f(x0) / f `(x0)

得到下一个近似值xn+1 = xn - (xn- A) / (3xn2) = xn - (x3 - A)/xn/3 = xn - (xn - A/xn/xn)/3 = (A/xn/xn + 2 * xn)/3



代码实现:
#include <bits/stdc++.h>
double func(double guess,double x)
{
    if(std::abs(guess * guess * guess - x) < 0.0000001)
        return guess;
    else
        return func((x / guess / guess + 2 * guess) / 3, x);
}
int main(int argc, char * argv[])
{
    double dInput;
    std::cin >> dInput;
    double guess = 1;
    printf("%.1f", func(guess, dInput));
    return 0;
}







全部评论
大家有兴趣的可以看看这个岗位,linux操作系统研发~ https://www.nowcoder.com/jobs/detail/241625?jobId=241625
点赞 回复 分享
发布于 2023-06-02 10:32 贵州

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
14 1 评论
分享
牛客网
牛客企业服务