新编C语言程序设计教程第7章函数课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《新编C语言程序设计教程第7章函数课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新编 语言程序设计 教程 函数 课件
- 资源描述:
-
1、新编C语言程序设计教程 清华大学出版社周二强周二强 软件学院软件学院 计算机科学与工程系计算机科学与工程系配套视频:配套视频: 博客:博客: 7.5.2 递归算法示例第2页,共32页。递归算法与递归函数(二)把直接或间接地调用自身的函数称为递归函数。把直接或间接地调用自身的函数称为递归函数。fac(5);fac(5);函数的递归调用是函数嵌的套调用。函数的递归调用是函数嵌的套调用。函数的递归调用是特殊的函数嵌套调用。函数的递归调用是特殊的函数嵌套调用。第3页,共32页。递归函数的两个角度第4页,共32页。递归算法解决问题有两个过程:递推的过程回归的过程第5页,共32页。递推的过程有解的有解的T
2、ext子问题子问题地地原问题原问题与子问题:性质相同规模缩小第6页,共32页。回归的过程解解解解解解解第7页,共32页。递归算法举例例例7-22 7-22 把用户输入的一行字符逆序输出,如输入把用户输入的一行字符逆序输出,如输入abcabc,则输出,则输出cbacba。分析:解决这个问题可以分三步:分析:解决这个问题可以分三步:第一步得到用户输入的第一个字符(第一步得到用户输入的第一个字符(a a););第二步把余下的字符(第二步把余下的字符(bcbc)逆序输出()逆序输出(cbcb););第三步输出第一个字符(第三步输出第一个字符(a a即得到即得到cbacba)。)。在上面的算法中第二步与
3、原问题性质相同,规模变小,这个算法为递归在上面的算法中第二步与原问题性质相同,规模变小,这个算法为递归算法。算法。子问题规模缩小到何种程度才能解决呢?不管输入字符串的长短,最后子问题规模缩小到何种程度才能解决呢?不管输入字符串的长短,最后都有一个回车符,如果字符为回车符时,问题就解决了。都有一个回车符,如果字符为回车符时,问题就解决了。第8页,共32页。例7-22 把用户输入的一行字符逆序输出递归函数可描述如下:递归函数可描述如下:1.1.得到输入字符中的第一字符得到输入字符中的第一字符2.2.如果字符为如果字符为nn,则直接返回,则直接返回 否则,调用否则,调用f f函数逆序输出剩余的字符函
4、数逆序输出剩余的字符 再输出第一字符。再输出第一字符。第9页,共32页。例7-22 把用户输入的一行字符逆序输出第10页,共32页。用户输入abcn,则变量c的值为a缓冲区中有数据bcn故c的值为b缓冲区中有数据cn故c的值为c缓冲区中有数据n故c的值n第11页,共32页。递归函数优雅地实现了递归算法第12页,共32页。递归函数的关键转化转化子问题的求解子问题的求解第13页,共32页。递归算法举例例例7-26 7-26 楼梯有楼梯有n n阶台阶,上楼时一步可以上阶台阶,上楼时一步可以上1 1阶,也可上阶,也可上2 2阶,编程阶,编程计算共有多少种不同的走法。计算共有多少种不同的走法。分析:分析
5、:设设n n阶台阶的走法为阶台阶的走法为f(n)f(n)当楼梯只有当楼梯只有1 1阶时,显然仅有阶时,显然仅有1 1种走法,故种走法,故f(1)f(1)1 1;楼梯只有;楼梯只有2 2阶时可阶时可以有以有2 2种走法,一步种走法,一步1 1阶地走上楼梯或一步阶地走上楼梯或一步2 2阶直接走上楼梯阶直接走上楼梯,故故f(2)f(2)2 2。现在是。现在是n n阶楼梯,共有多少种不同的走法呢?阶楼梯,共有多少种不同的走法呢?第14页,共32页。先考虑上楼梯时第一步如何走?先考虑上楼梯时第一步如何走?只有两种情况:上只有两种情况:上1 1阶和上阶和上2 2阶阶n n阶楼梯的不同走法等于这两种阶楼梯的
6、不同走法等于这两种情况下所有不同走法的总和。情况下所有不同走法的总和。第一步上第一步上1 1阶时走法有多少种?阶时走法有多少种?还有还有n n1 1阶楼梯需要上。阶楼梯需要上。剩余的楼梯有多少种不同走法?剩余的楼梯有多少种不同走法?性质相同,规模变小!性质相同,规模变小!n n阶台阶的走法为阶台阶的走法为f(n)f(n),剩余,剩余n n1 1阶的楼梯的走法当然有阶的楼梯的走法当然有f(n-1)f(n-1)种!种!第一步上第一步上2 2阶时走法有多少种呢?阶时走法有多少种呢?例7-26 n阶楼梯有几种不同的走法第15页,共32页。例7-25 n阶楼梯有几种不同的走法设设n n阶台阶的走法为阶台
7、阶的走法为f(n)f(n),则,则f(n)f(n)的定义为:的定义为:1 n=1;1 n=1;2 n=2;2 n=2;f(n-1)+f(n-2)n2;f(n-1)+f(n-2)n2;递归函数递归函数f(n)f(n)用程序实现为:用程序实现为:int upstairs(int n)int upstairs(int n)if(n=1|n=2)return n;if(n=1|n=2)return n;return upstairs(n-1)+upstairs(n-2);return upstairs(n-1)+upstairs(n-2);第16页,共32页。求4阶楼梯有多少种不同的走法void ma
展开阅读全文