二分法の本質は単調ではありません。単調性があれば、間違いなく二分法を使用できますが、二分法を使用する場合、必ずしも単調性はありません。
浮動小数点2点:
#include<iostream>
using namespace std;
int main()
{
//定义一个浮点数并输入
double x;
cin >> x;
//定义边界
double l = 0,r = x;
while(r - l > 1e-8)
{
//注意mid不可以定义在while外面
double mid = (l + r) / 2;
if (mid * mid >= x) r = mid;
else l = mid;
}
//当l与r的差在很小的范围内的时候(十的负八次方),输出l和r是一样的
printf("%lf\n",l);
printf("%lf\n",r);
return 0;
}
ifとelseの具体的な分析は次のとおりです
演算結果: