欢迎来到天天文库
浏览记录
ID:49252417
大小:164.00 KB
页数:11页
时间:2020-02-02
《C语言第十一讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言电子教案(十一)第十一讲第八章函数主要内容:§8.5函数的嵌套调用§8.6函数的递归调用1§8.5函数的嵌套调用嵌套调用:在调用一个函数的过程中又调用了另外一个函数,叫作函数的嵌套调用。嵌套调用的执行过程:从什么地方调用函数,就返回到什么地方。2函数的调用main()函数fun1()函数fun2()函数...调用函数fun1①②⑦....调用函数fun2③④⑤⑧⑥⑨结束3函数的嵌套调用main()函数....调用函数fun1①⑨②fun1()函数③....调用函数fun2④fun2()函数⑤⑥⑦⑧结束4函
2、数的嵌套调用举例—求cnmlongfact(intt){inti;longs=1;for(i=1;i<=t;i++)s*=i;return(s);}longc(intx,inty){longf;f=fact(x)/(fact(y)*fact(x-y));return(f);}main(){intm,n,t;scanf("%d%d",&m,&n);if(n>m){t=m;m=n;n=t;}printf("%ld",c(m,n));}返回c函数在main函数中调用c函数在c函数中三次调用fact函数返回main
3、函数函数fact的功能是求形参t的阶乘运行程序5§8.6函数的递归调用递归调用:在调用一个函数的过程中又直接或间接地调用该函数本身,叫作函数的递归调用。递归调用应注意的问题:要防止无限次的递归调用。防止无限递归调用的方法:使用if语句设置一个递归过程结束的条件,且在递归过程中使该条件逐步趋于成立6递归调用举例—年龄问题age(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;return(c);}main(){printf("%d",age(5));}递归结束的条件调用过程中
4、又调用了自身函数age的功能是求第n个人的年龄运行程序7age(5)c=age(4)+2c=age(3)+2c=age(2)+2c=age(1)+2c=10(age(1))c=12(age(2))c=14(age(3))c=16(age(4))c=18(age(5))返回main函数8递归程序应用举例2main(){intw=5;fun(w);printf("");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}运行程序9递归程序应用举例2fun(5)fun(
5、4)fun(3)fun(2)fun(1)输出0输出1输出2输出3输出4返回main函数fun(0)输出5fun(intk){if(k>0)fun(k-1);printf("%d",k);}10其它可以使用递归方法解决的问题求阶乘:longf(intn){longintt;if(n==0
6、
7、n==1)t=1;elset=f(n-1)*n;return(t);}Fabonacci数列:longfab(intn){longintt;if(n==1
8、
9、n==2)t=1;elset=f(n-1)+f(n-2);retur
10、n(t);}猴子吃桃子问题11
此文档下载收益归作者所有