【例6.17】计算s=(2×2)!+(3×3)!。
程序内容如下:
1 #include<stdio.h>
2 long f1(int p)
3 {
4 int k;
5 long r;
6 long f2(int);
7 k=p*p;
8 r=f2(k);
9 return r;
10 }
11 long f2(int q)
12 {
13 long c=1;
14 int i;
15 for(i=1;i<=q;i++)
16 c=c*i;
17 return c;
18 }
19 int main(void)
20 {
21 int i;
22 long s=0;
23 for(i=2;i<=3;i++)
24 s=s+f1(i);
25 printf("\ns=%ld\n",s);
26 return 0;
27 }
程序结果如图6.14所示:(www.xing528.com)
图6.14 例6.17程序结果图
【例题中关键问题说明】
本题可编写两个函数,一个是用来计算平方值的函数f1,另一个是用来计算阶乘值的函数f2。主函数先调f1计算出平方值,再在f1中以平方值为实参,调用f2计算其阶乘值,然后返回f1,再返回主函数,在循环程序中计算累加和。
【例6.18】一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
程序内容如下:
1 #include<stdio.h>
2 int f(int n)
3 {
4 int num;
5 if(n==8)
6 return 2;
7 else
8 {
9 num=(f(n+1)+1)*2;
10 printf("第%d个村子卖鸭子%d只\n",n,num/2+1);
11 }
12 return num;
13 }
14 int main()
15 {
16 int num=f(1);
17 printf("总共赶鸭子%d个\n",num);
18 return 0;
19 }
程序结果如图6.15所示:
图6.15 例6.18程序结果图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。