用迭代法求x
这个程序是正确的,用迭代法求x=sqrt(a)的程序。#include <stdio.h>
#include <math.h>
int main()
{
double x1,x2,a;
scanf("%lf",&a);
x1=a/2;
x2=0.5*(x1+a/x1);
while(fabs(x1-x2)>=1e-5)
{
x1=x2;
x2=0.5*(x1+a/x1);
}
printf("%lf",x2);
return 0;
}
但我自己写的时候,没有“ x2=0.5*(x1+a/x1); ”这一句,我就不明白为什么要在while循环外写一句这个赋值式子?直接进入while循环不好吗?
#include <stdio.h>
#include <math.h>
int main()
{
double x1,x2,a;
scanf("%lf",&a);
x1=a/2;
while(fabs(x1-x2)>=1e-5)
{
x1=x2;
x2=0.5*(x1+a/x1);
}
printf("%lf",x2);
return 0;
}