C++ 实现雷神之锤开方算法代码
以下是一个简单的 C++ 代码来实现雷神之锤开方算法:
#include <iostream>
using namespace std;
double sqrt(double x) {
double l = 0, r = x;
while (r - l > 1e-8) {
double mid = (l + r) / 2;
if (mid * mid < x) l = mid;
else r = mid;
}
return l;
}
int main() {
double x;
cin >> x;
cout << sqrt(x) << endl;
return 0;
}
在此代码中,我们使用二分搜索来逐步逼近 x 的平方根。我们将左边界 l 初始化为 0,右边界 r 初始化为 x。在每次迭代中,我们计算中间值 mid,并比较 mid 的平方与 x 的大小关系。如果 mid 的平方小于 x,则将左边界 l 更新为 mid,否则将右边界 r 更新为 mid。最终,l 将收敛到 x 的平方根。
需要注意的是,我们在比较 mid 的平方与 x 的大小关系时,使用了 1e-8 的精度。这是因为在计算机中,浮点数的精度有限,如果不设置精度,可能会导致结果不准确。
原文地址: https://www.cveoy.top/t/topic/lbKZ 著作权归作者所有。请勿转载和采集!