C语言问题解答^
11-1 下面的程序是用递归算法求整数a的平方根x。求平方根的迭代公式如下: xn+1 = 0.5*(xn + a/xn) 试问①和②处应该填什么? #include <stdio.h> #include <math.h> double mysqrt(double a, double xn) { double x1, y; xn1 = ① ; if (fabs(xn1-xn) > 0.00001) y = mysqrt( ② ); else y = xn; return y; } void main() { double x; printf("Enter x: "); scanf("%lf", &x); printf("The square root of %lf = %lf\n", x, mysqrt(x, 1.0)); } 11-2 编写一个递归函数sum(int n), 求1~n的累加和。并用全局变量和定义在sum函数内的静态局部变量两种方法,打印sum被调用的次数。若在sum函数里用局部变量来统计sum调用次数,会产生怎样的结果。
1)xn1=0。5*(xn+a/xn) (2)y=mysqrt(a ,xn ) 11-2 1、定义在sum函数内的静态局部变量 sun(int n) {int i=0,s; s=0; if(n=1) return(s+=1); else if (n==2) printf("一共调用了%d次",i+1); else {i++;return(sun(n-1))}; ;} 2、全局变量 int s; sun(int n) {int i=0; if(n=1) return(s+=1); else if (n==2) printf("一共调用了%d次",i+1); else {i++;return(sun(n-1))}; ;} 后果我到没有想过,因为我认为上面所写的一定不会出错,当然本程序还没有写完,我想大家都是学C语言的,不必写完,大家都能看懂是不是呀。
。
(1)xn1=0.5*(xn+a/xn) (2)y=mysqrt(a ,xn ) 我的邮箱是tiandong@ 请与我联系啊。
答:LZ的代码中,双重循环变量的初始值及终值条件有问题。 现修改如下,请参考: #include "stdio.h" main() {int a[20],i,j,n...详情>>