正在加载图片...
index [index] return inde 8.19用递归法求解级数: 1+1/x+1/x2+1/x3+…直到某一项1/xn≤10-6时为止。 算法分析:显然,递归项是1/xn,n==0,1,2,…,用库函数y=pow(1.0/x,n++) 可以很方便地实现:y<=pow(0.1,6)是递归结束的条件。一个完整的程序如下: #includestdio. h> #include<math. h> float progression(intx)/*递归求级数*/ float item X,n++ (0.1,6) else return (progression(x)+item) int maino ntf scanf("%f”,&x) printf(y =%f", progression(x)); return 0 8.20设计一递归函数,计算一个自然数有多少种“加”表示法。如:5有七种: 5,4+1,3+2,3+1+1,2+2+1, 2+1+1+1,1+1+1+1+1。 算法分析:这是一个数字分解问题,每一次的有效分解都是问题的一个解。 #include <stdio. h> int maino printf(Input an integer n(n>0):") scanf("%d", &n) printf("%d has %ld kinds \n",n, p) nt pks (int ttl, int max)7 if(i == N-1) index = i; else { index = maxloca(i+1); index = a[i] > a[index] ? i : index; } return index; } 8.19 用递归法求解级数: y=1+1/x+1/x2+1/x3+…直到某一项 1/xn ≤10-6 时为止。 算法分析:显然,递归项是 1/xn,n == 0,1,2,…,用库函数 y = pow(1.0/x,n++) 可以很方便地实现;y <= pow(0.1,6)是递归结束的条件。一个完整的程序如下: #include<stdio.h> #include<math.h> int n = 0; float progression(int x) /* 递归求级数 */ { float item; item = pow(1.0/x,n++); if(item <= pow(0.1,6)) return 0.0; else return(progression(x)+item); } int main() { float x; printf("Input x = "); scanf("%f",&x); printf("y = %f", progression(x)); return 0; } 8.20 设计一递归函数,计算一个自然数有多少种“加”表示法。如:5 有七种: 5,4+1,3+2,3+1+1,2+2+1, 2+1+1+1,1+1+1+1+1。 算法分析:这是一个数字分解问题,每一次的有效分解都是问题的一个解。 #include <stdio.h> int main() { int n,m,p = 0, pks(int,int); printf("Input an integer n (n>0):"); scanf("%d",&n); for(m = n; m >= 1; m--) p += pks(n,m); printf("%d has %ld kinds \n",n,p); } int pks(int ttl,int max)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有