恰巧,在MIT的python课程上看到了一个计算平方根的课程,原视频网址:https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11
中文简单解释:百度文库
看了上面的就大致知道如何去做了,主要是通过一个迭代过程,很快的让值收缩。
class Solution:
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
def f(y,x): #用于迭代的函数
return (1/2)*(y+x/y)
y = 4 #初始的试探值,可以随便设置
for i in range (40): #最大迭代次数40次
y1 = f(y,x)
if abs(y1-y)<0.1: #如果精确到了小数点后一位,停止迭代,返回结果
return int(y1)
y = y1
c =Solution()
z = c.mySqrt(10)
print(z)