使用 C++ 中的二分查找法查找数字的平方根,精确到指定精度
假设我们有一个正数 n 和精度 p。我们需要使用二分查找技术找到数字 n 的平方根,精确到小数点后 p 位。因此,如果数字是 n = 50,而 p = 3,则输出为 7.071。
为了解决这个问题,我们需要遵循以下步骤:
- 初始化起始值 start := 0 和结束值 end := n
- 比较中间整数的平方,如果它等于该数字,则整数部分已找到,否则根据需要向左或向右查找。
- 一旦我们完成了整数部分的任务,则对小数部分进行操作。
- 将增量变量初始化为 0.1,然后计算小数部分,精确到 p 位。对于每次迭代,增量变为其先前值的 1/10。
- 最后返回答案。
示例
#include<iostream>
using namespace std;
float sqrtBinarySearch(int num, int p) {
int left = 0, right = num;
int mid;
float res;
while (left <= right) {
mid = (left + right) / 2;
if (mid * mid == num) {
res = mid;
break;
}
if (mid * mid < num) {
left = mid + 1;
res = mid;
} else {
right = mid - 1;
}
}
float incr = 0.1;
for (int i = 0; i < p; i++) {
while (res * res <= num) {
res += incr;
}
res -= incr;
incr /= 10;
}
return res;
}
int main() {
int n = 50, p = 3;
cout << "Square root of " << n << " up to precision " << p << " is: " << sqrtBinarySearch(50, 3) << endl;
}输出
Square root of 50 up to precision 3 is: 7.071
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP