#include "iostream"
using namespace std;
int main()
{
double x1,x,y,z;
cin>>x1;
for(x=x1,y=2*x/3+x1/(3*x*x),z=x;
y-z<-1e-5||y-z>1e-5;
y=(2*x)/3+x1/(3*x*x),z=x,
x=y);
cout<<"立方根为:"<<x<<endl;
system("pause");
return 0;
}
自己的for语句尝试,很复杂,并且很绕。
询问了一下同学,优化了算法,学到了如何更好地处理重新赋值,而又不影响关系判断:
#include "iostream"
using namespace std;
int main()
{
double a;
cin>>a;
double x1(a),x2,b;
do
{
x2=(2*x1)/3+a/(3*x1*x1);
b=x2-x1; //此处先做差
x1=x2; //再重新赋值
}
while(fabs(b)>1e-5);
cout<<"立方根为:"<<x1<<endl;
system("pause");
return 0;
}