问题 问答题

下列给定程序中,函数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)。

单项选择题
单项选择题