下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下: 例如,2的平方根为1.414214。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更

admin2010-09-14  24

问题 下列给定程序中,函数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));
   }

选项

答案(1)错误: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)。
转载请注明原文地址:https://jikaoti.com/ti/eIkiFFFM
0

最新回复(0)