求大佬看下开平方的函数(牛顿迭代法),感激涕零!

#include
#include
using namespace std;

//x(n + 1) = (xn+a/xn)/2
void NewtonSqrt(double a,double &x){
a = x - (x + a / x) / 2;
if (a<= 0.00001)
return;
x = (x + a / x) / 2;
NewtonSqrt(a, x);
}

void main(){
double a = 3;
double x = a / 2;
cout << x <<endl;
_getch();
}

3个回答

void NewtonSqrt(double a,double &x),这里&x是引用吧,是你的本意吗?还有就是你压根就没有在主函数用到你定义的那个函数吧?
另外都已经using namespace std;了,那为什么还要用void main()?

 void NewtonSqrt(double a,double &x)
{
    a = x - (x + a / x) / 2;
    if (a<= 0.00001)
        return;
    x = (x + a / x) / 2;
    NewtonSqrt(a, x);
}
int main()
{
    double a = 3;
    double x = a / 2;
    NewtonSqrt(a,x);
    cout << x <<endl;
    getchar();
    return 0;
}

/ 2这个是整除,要/ 2.0

zhang_guyuan
jalen_zh a是double,将2改成2.0是没有意义的
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问