就我所知,二分法缩小搜索范围并达到区间内的特定值。请给我一个如何制作通用代码以找到平方根的示例。我认为采用低,中,高三个变量的方式。 high = userinput,low = 0,mid(low + high)/ 2,问题是如何更改值。
答案 0 :(得分:4)
#include <iostream>
using namespace std;
int main() {
int val;
cout << "Enter the number: ";
cin >> val;
if( val< 0) {
cout<< "According to my maths its not possible." << endl;
} else {
float low = 0, high = val;
float mid = (low + high)/2;
int c = 0;
while (c != 1) {
if(mid * mid = val) {
cout << "Square root is: " << mid <<endl;
c = 1;
} else {
if(mid * mid > val) {
high = mid;
mid = (low + high)/2;
} else {
low = mid;
mid = (low + high)/2;
}
}
}
}
return 0;
}
答案 1 :(得分:0)
让我们说我们正在寻找sqrt(N)
正如here所述,你必须找到LOW和HIGH的平均值,如果平均值的平方大于N
,我们用我们刚刚找到的平均值来改变高值,如果它是小于N
,我们用平均值改变低值。我们多次重复这些步骤以满足所需的精度。