# 二分法 逼近求开方
def square(x):
if x > 1:
high = x
low = 1
elif 0 < x < 1:
high = 1
low = x
elif x == 1 or x == 0:
return x
else:
return -1 * square(-1 * x)
ACCURACY = 0.0001
while low < high:
mid = (high + low) / 2.0
print 'mid = %s,low=%s,high = %s' % (mid, low, high)
if mid*mid > x:
high = mid
else:
low = mid
if ACCURACY * -1 <= mid*mid - x <= ACCURACY:
return float("%.4f" % mid)