下列给定程序中,函数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)
(B)错误:if(fabs(xA-x0)>0.0000A) 正确:if(fabs(xA-x0)>=0.0000A)
解析:
用C语言求平方根的方法一般有两种经典的算法,它们分别是迭代法和递归法,本题要求用递归法。该程序采用了if语句,错误在于if语句的判断条件,程序的含义是当迭代结果差小于误差时进行循环,故正确的应该是 if(fabs(x1-x0)>=0.00001)。