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

#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();
}

/ 2这个是整除,要/ 2.0

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;
}