题目:已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位
考察点
- 基础算法的灵活应用能力,二分法学过数据结构的同学都知道,但不一定往这个方向考虑
- 退出条件设计:前后两次的差值的绝对值<=0.0000000001, 则可退出
# 定义一个最终的二分退出的标准,小数点后10位
global a
a = 0.0000000001
def Search():
low = 1.4
high = 1.5
mid = (low + high) / 2;
# 前后两次的差值的绝对值 <= 0.0000000001, 则可退出
while(high-low>a):
if(high*high>2):
high=mid
else:
low=mid
mid=(low + high)/2
print("最终的low 的值: % s" %low)
print("最终的high的值: % s" %high)
print("最终的mid 的值: % s" %mid)
if __name__ == "__main__":
Search()
最终: