求浮點數x的平方根y,精度誤差e。
1、顯然y <= x,即在 [0, x] 中查找一個y,使得滿足 | y * y - x | <= e,很容易想到二分查找,時間復雜度是O(logx)。
float Sqrt(float x) { const float e = 0.0001; float low = 0, high = x, y = (low + high) / 2; while (y * y - x > e || y * y - x < -e) { if (y * y - x > e) { high = y; // 大了 } else if(y * y - x < -e) { low = y; // 小了 } y = (low + high) / 2; } return y; }