当前位置: 移动技术网 > 移动技术>移动开发>IOS > 华为上机考试题系列(二):HJ107求解立方根

华为上机考试题系列(二):HJ107求解立方根

2020年07月15日  | 移动技术网移动技术  | 我要评论

题目:不用库函数求某数的立方根。

三种方法包括pow函数、二分法、牛顿迭代法,本文重点讲下效率最高的牛顿迭代法

关于牛顿迭代法,我觉得可以参考每日一问之初识牛顿迭代法(Newton's method)这篇文章,讲解得很浅显易懂

为什么求解立方根可以使用牛顿迭代法?立方根函数也是曲线函数,同样适用于牛顿迭代法,下面是求解过程:

关于这道题目千万不要把导函数求错,如果导函数求错,结果肯定错误

python实现:

第一种写法:(这种写法会运行超时)
a=float(a)
print(a)
x = a 
while x*x*x > a:
    x = (8*x+a/(x*x))/9
print(x)
第二种写法:通过了牛客网的测试
import sys
import math
def f(x,m):
    return x**3 - m

def f_derivative(x):
    return 3*x**2

ep = 0.000001
for a in sys.stdin:
    a=float(a)
    x = a 
    k = 1
    while ep <math.fabs(x-k):
        k = x
        x = x - f(x,a)/f_derivative(x)
    print("%.1f"%x)

    

参考文章:

求解一个数的立方根(想不懂都难)

面试算法题:求一个数的立方根

 

本文地址:https://blog.csdn.net/sanmi8276/article/details/107321739

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网