[算法]:二分法-开方
# 二分法 逼近求开方 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)