华为上机考试题系列(二):HJ107求解立方根
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                华为上机考试题系列(二):HJ107求解立方根
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                題目:不用庫函數求某數的立方根。
三種方法包括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 - mdef f_derivative(x):return 3*x**2ep = 0.000001 for a in sys.stdin:a=float(a)x = a k = 1while ep <math.fabs(x-k):k = xx = x - f(x,a)/f_derivative(x)print("%.1f"%x)參考文章:
求解一個數的立方根(想不懂都難)
面試算法題:求一個數的立方根
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的华为上机考试题系列(二):HJ107求解立方根的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 接口自动化测试系列(一):HTTP状态码
 - 下一篇: 华为上机考试题系列(一):牛客网的奇葩操