下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:
例如,2的平方根为1.414214。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include <math. h> #include <stdio. h> /*************found**************/ fun(double a,double x0) { double xl,y; xl= (x0+a/x0)/2.0; /*************found**************/ if (fabs (xl-x0) >0.00001) y=fun (a, xl); else y=x1; return y; } main ( ) { double x; printf("Enter x: "); scanf("%1f",&x); printf ("The square root of %1f is %1f\n", x, fun(x,l.O)); }
参考答案:错误:fun(double a,double x0) 正确:double fun(double a,double x0)
解析:(2)错误:if(fabs(x1-x0)>0.00001) 正确:if(fabs(x1-x0)>=0.00001) 用C语言求平方根的方法一般有两种经典的算法,它们分别是迭代法和递归法,本题要求用递归法。该程序采用了if语句,错误在于if语句的判断条件,程序的含义是当迭代结果差小于误差时进行循环,故正确的应该是 if(fabs(x1-x0)>=0.00001)。