0.简介
开根号,在C++中sqrt就可以解决,实际怎么写呢?
1.推导开根号计算方法
这里采用连分数逼近方法,例如对2开根号可以做如下操作。
![](https://i-blog.csdnimg.cn/blog_migrate/6004193372e82fd70266698098f77772.jpeg)
然后发现这个式子是可以递归的,就写出如下代码。
double mySqrt(double x)
{
static int t = 0;
return t++==10 ? 0 : 1+((x-1)/(mySqrt(x)+1));
}
int main()
{
cout << mySqrt(2) << endl;
return 0;
}
开根号,在C++中sqrt就可以解决,实际怎么写呢?
这里采用连分数逼近方法,例如对2开根号可以做如下操作。
然后发现这个式子是可以递归的,就写出如下代码。
double mySqrt(double x)
{
static int t = 0;
return t++==10 ? 0 : 1+((x-1)/(mySqrt(x)+1));
}
int main()
{
cout << mySqrt(2) << endl;
return 0;
}