C/C++ 求浮点数平方根
求浮点数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; }
- 上一篇 »JAVA中的NAN
- 下一篇 »JavaScript Array map, 方法