这是一个学术练习.我在Python中实现了一个sqrt函数.这是我的代码,
def mySqrt(x):
low, high = 1, x
while low < high:
mid = low + (high - low)/2
if mid * mid > x:
high = mid - 1
elif mid * mid < x:
low = mid
else:
return mid
return low
问题是,当数字不是一个完美的正方形时,这不起作用.
我想重新设计这个函数仍然使用log n复杂度,它将sqrt的值返回到指定的小数位数.
所以它就像,
def sqrt(num, param):
pass
从而
sqrt(5, 2) = 2.41
sqrt(5, 3) = 2.414
有人可以帮我弄这个吗.谢谢.
解决方法:
def sqrt(x):
n = 1
for _ in range(10):
print(n)
n = (n + x/n) * 0.5
它收敛速度极快.这是sqrt(2)的一个例子:
1
1.5
1.41666666667
1.41421568627
1.41421356237
1.41421356237
1.41421356237
1.41421356237
1.41421356237
1.41421356237
对于sqrt(3):
1
2.0
1.75
1.73214285714
1.73205081001
1.73205080757
1.73205080757
1.73205080757
1.73205080757
1.73205080757
现在您只需要用while和precision条件替换for循环并返回结果而不是仅打印它.
标签:python,python-3-x
来源: https://codeday.me/bug/20190611/1216569.html