「算法学习」:求平方根
給你一個(gè)非負(fù)整數(shù) x ,計(jì)算并返回 x 的 算術(shù)平方根 。由于返回類型是整數(shù),結(jié)果只保留 整數(shù)部分 ,小數(shù)部分將被 舍去 。注意:不允許使用任何內(nèi)置指數(shù)函數(shù)和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
來(lái)源:力扣(LeetCode)
輸入:x = 8
輸出:2
解釋:8 的算術(shù)平方根是 2.82842…, 由于返回類型是整數(shù),小數(shù)部分將被舍去。
解這道題目運(yùn)用牛頓迭代法會(huì)快速很多,但是此時(shí)有個(gè)問(wèn)題,什么是牛頓迭代法?
Good question,我也不會(huì),大寫的尷尬
但是我們只是運(yùn)用到了其中的公式來(lái)計(jì)算,所以我這邊就簡(jiǎn)單的介紹下他的公式及其在本題中的運(yùn)用
從圖中可以看到函數(shù)f(x)=x2-a=0的曲線圖及其切線,可以看出來(lái)根號(hào)a的值就是函數(shù)的正實(shí)根,函數(shù)的切線函數(shù)為f(x)=2x,函數(shù)上任意一點(diǎn)的切線率為2x,故x-f(x)/(2x)x?f(x)/(2x) 就是一個(gè)比 x更接近的近似值。代入 f(x)=x2-af(x)=x2?a 得到 x-(x2-a)/(2x)x?(x*2?a)/(2x),也就是 (x+a/x)/2。
我們得到一個(gè)公式:(x+a/x)/2
總結(jié)
以上是生活随笔為你收集整理的「算法学习」:求平方根的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端发包流程笔记
- 下一篇: Android以太网架构源码