代码如下:
//1241:二分法求函数的零点
#include<iostream>
#include<iomanip>
using namespace std;
int i,j;
double f(double x)
{
return x*x*x*x*x-15*x*x*x*x+85*x*x*x-225*x*x+274*x-121;
}
void qiugen(int l,int r)//在l,r之间求根
{
int mid=(l+r)/2;
double mid1=mid*1.0/100000000;//得到实际的小数
if(r-l<10)
{
cout<<fixed<<setprecision(6)<<mid1<<endl;
return;
}
else
{
double s=f(mid1);
if(s==0)
{
cout<<fixed<<setprecision(6)<<mid1<<endl;
return;
}
else if(s<0)//更新二分查找右边界
{
qiugen(l,mid);
}
else//更新二分查找左边界
{
qiugen(mid,r);
}
}
}
int main()
{
qiugen(150000000,240000000);//放大100000000倍
return 0;
}