实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例1:
输入: 4
输出: 2
示例2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
由于返回类型是整数,小数部分将被舍去。
分析
并不是直接用sqrt()
方法
1.采用慢慢逼近,二分法。
l=0,r=5
mid=(l+r)/2=2.5
y=mid*mid
if y.>y r=mid
if y.<y l=mid
2.牛顿迭代法:
不断的枚举,枚举其中一点求切线,用切线的跟来逼近,不停的求切线,用来逼近目标跟。
X n+1 =X n-f(Xn)/f’(Xn)
= Xn-(Xn2-y)/2Xn
=(Xn+y/Xn)/2
代码实现
代码实现
def mySqrt(self, x: int) -> int:
r=x
while r*r>x:
r=(r+x/r)/2
return r