Q:对于给定的整数 n >0, 请求出它的平⽅方根(sqrt(n)), 保留留⼩小数点后⼀一位,不不要使⽤用任何built-in function。
思路1: 用二分法求,每次取中间值,查看中间值的平方与给定整数的大小,如果差值小于0.1, 则停止计算。
python代码:
def sqrt1(n):
if n<0:
return -1
low = 0
high = n
middle = (low+high)/2
while (abs(middle*middle) - n)> 0.1:
if middle*middle - n > 0.1:
high = middle
else:
low = middle
middle = (low+high)/2
return middle
思路2: 利用牛顿法求解。我们需要求解的函数为 f(x) = x^2 - n, 而 f’(x)=2x,由牛顿法可知 x <- x - f(x)/f’(x)来逼近真实解。
python代码:
def sqrt2(n):
if n < 0:
return -1
x = n
while (abs(x*x)-n) > 0.1:
x = (x+n/x)/2
return x
参考:
https://blog.youkuaiyun.com/u013146882/article/details/72350873
https://www.cnblogs.com/huashanqingzhu/p/6635691.html