C++ 二分法解决开平方

#include"iostream"

using namespace std;

double sqrt(double a){

double x=a;

double l=a;double r=a;

//确定区间

while(l*l>a){

l/=2;

if(l*l>a){

l/=2;

r/=2;

}else{

break;

}

}

// 二分法

while (l<=r-0.000001)

{

x=l+(r-l)/2;

if(x*x<a){

l=x;

}else{

r=x;

}

}

return x;

}

int main(){

cout<<sqrt(0)<<endl;

cout<<sqrt(1)<<endl;

cout<<sqrt(2)<<endl;

cout<<sqrt(3)<<endl;

cout<<sqrt(4)<<endl;

cout<<sqrt(5)<<endl;

cout<<sqrt(6)<<endl;

cout<<sqrt(60)<<endl;

cout<<sqrt(60342342)<<endl;

return 0;

}

猜你喜欢

转载自blog.csdn.net/weixin_53064820/article/details/132316584
今日推荐