《数据结构与算法》PPT课堂课件-第5章-递归.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《数据结构与算法》PPT课堂课件-第5章-递归.pdf》由会员分享,可在线阅读,更多相关《《数据结构与算法》PPT课堂课件-第5章-递归.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2存存在在算算法法调调用用自自己己的的情情况况:若若一一个个算算法法直直接接的的或或间间接接的的调调用用自自己己本本身身,则则称称这这个个算算法法是是递递归归算算法法。(1 1)问问题题的的定定义义是是递递推推的的阶阶乘乘函函数数的的常常见见定定义义是是:5.1递归的概念3也也可可定定义义为为:写写成成函函数数形形式式,则则为为:这这种种函函数数定定义义的的方方法法是是用用阶阶乘乘函函数数自自己己本本身身定定义义了了阶阶乘乘函函数数,称称公公式式(63)是是阶阶乘乘函函数数的的递递推推定定义义式式。4(2)问问题题的的解解法法存存在在自自调调用用 一一个个典典型型的的例例子子是是在在有有序序数
2、数组组中中查查找找一一个个数数据据元元素素是是否否存存在在的的折折半半查查找找算算法法。 55.2递归算法的执行过程 例例6-1 6-1 给给出出按按照照公公式式6-36-3计计算算阶阶乘乘函函数数的的递递归归算算法法,并并给给出出n = 3n = 3时时递递归归算算法法的的执执行行过过程程。 设设计计:按按照照公公式式6-36-3计计算算阶阶乘乘函函数数的的递递归归算算法法如如下下:long long intint Fact(intFact(int n) n) intint x; x;long long intint y; y;if(n 0) if(n 0) /*(n 0/*(n high)
3、 return -1;if(low high) return -1;/*/*查查找找不不成成功功* */ /mid = (low + high) / 2;mid = (low + high) / 2;if(x = amid)if(x = amid)return mid;return mid;/*/*查查找找成成功功* */ /else if(x amid)else if(x amid) return return BSearch(aBSearch(a, x, low, mid-1);, x, low, mid-1);/*/*在在下下半半区区查查找找* */ /elseelsereturn re
4、turn BSearch(aBSearch(a, x, mid+1, high);, x, mid+1, high);/*/*在在上上半半区区查查找找* */ / 9测测试试主主函函数数设设计计如如下下:# include # include main(void)main(void) intint a = 1, 3, 4, 5, 17, 18, 31, 33; a = 1, 3, 4, 5, 17, 18, 31, 33;intint x = 17; x = 17;intint bnbn;bnbn = = BSearch(aBSearch(a, x, 0,7);, x, 0,7);if(bni
5、f(bn = -1) = -1) printf(xprintf(x不不在在数数组组a a中中););else else printf(xprintf(x在在数数组组a a的的下下标标%d%d中中, , bnbn);); 10BSearch(aBSearch(a, x, 0,7), x, 0,7)的的递递归归调调用用过过程程如如图图6-36-3所所示示,其其中中,实实箭箭头头表表示示函函数数调调用用,虚虚箭箭头头表表示示函函数数的的返返回回值值。115.3递归算法的设计方法 递递归归算算法法既既是是一一种种有有效效的的算算法法设设计计方方法法,也也是是一一种种有有效效的的分分析析问问题题的的方方
6、法法。递递归归算算法法求求解解问问题题的的基基本本思思想想是是:对对于于一一个个较较为为复复杂杂的的问问题题,把把原原问问题题分分解解成成若若干干个个相相对对简简单单且且类类同同的的子子问问题题,这这样样较较为为复复杂杂的的原原问问题题就就变变成成了了相相对对简简单单的的子子问问题题;而而简简单单到到一一定定程程度度的的子子问问题题可可以以直直接接求求解解;这这样样,原原问问题题就就可可递递推推得得到到解解。 并并不不是是每每个个问问题题都都适适宜宜于于用用递递归归算算法法求求解解。适适宜宜于于用用递递归归算算法法求求解解的的问问题题的的充充分分必必要要条条件件是是:(1 1)问问题题具具有有
7、某某种种可可借借用用的的类类同同自自身身的的子子问问题题描描述述的的性性质质;(2 2)某某一一有有限限步步的的子子问问题题(也也称称作作本本原原问问题题)有有直直接接的的解解存存在在。当当一一个个问问题题存存在在上上述述两两个个基基本本要要素素时时,设设计计该该问问题题的的递递归归算算法法的的方方法法是是:(1 1)把把对对原原问问题题的的求求解解设设计计成成包包含含有有对对子子问问题题求求解解的的形形式式。(2 2)设设计计递递归归出出口口。12Hanoi塔问题问题描述:有A,B,C三个塔座,A上套有n个直径不同的圆盘,按直径从小到大叠放,形如宝塔,编号1,2,3n。要求将n个圆盘从A移到
8、C,叠放顺序不变,移动过程中遵循下列原则:每次只能移一个圆盘圆盘可在三个塔座上任意移动任何时刻,每个塔座上不能将大盘压到小盘上解决方法:n=1时,直接把圆盘从A移到Cn1时,先把上面n-1个圆盘从A移到B,然后将n号盘从A移到C,再将n-1个盘从B移到C。即把求解n个圆盘的Hanoi问题转化为求解n-1个圆盘的Hanoi问题,依次类推,直至转化成只有一个圆盘的Hanoi问题。执行情况:递归工作栈保存内容:形参n,x,y,z和返回地址返回地址用行编号表示n x y z 返回地址 13 main() int m; printf(Input number of disks”); scanf(%d,&
9、m); printf(”Steps : %3d disks”,m); hanoi(m,A,B,C);(0) void hanoi(int n,char x,char y,char z)(1) (2) if(n= =1)(3) move(x,z);(4) else(5) hanoi(n-1,x,z,y);(6) move(x,z);(7) hanoi(n-1,y,x,z);(8) (9) ABC1233 A B C 03 A B C 02 A C B 63 A B C 02 A C B 61 A B C 6ABC3 A B C 02 A C B 614 main() int m; printf(
10、Input the number of disks scanf(%d,&m); printf(The steps to moving %3d hanoi(m,A,B,C);(0) void hanoi(int n,char x,char y,char z)(1) (2) if(n=1)(3) move(x,z);(4) else(5) hanoi(n-1,x,z,y);(6) move(x,z);(7) hanoi(n-1,y,x,z);(8) (9) ABC3 A B C 02 A C B 61 C A B 8ABC3 A B C 02 A C B 63 A B C 03 A B C 02
11、A C B 615 main() int m; printf(Input the number of disks scanf(%d,&m); printf(The steps to moving %3d hanoi(m,A,B,C);(0) void hanoi(int n,char x,char y,char z)(1) (2) if(n=1)(3) move(x,z);(4) else(5) hanoi(n-1,x,z,y);(6) move(x,z);(7) hanoi(n-1,y,x,z);(8) (9) ABC3 A B C 02 B A C 83 A B C 02 B A C 81
12、 B C A 6ABC3 A B C 02 B A C 83 A B C 016 main() int m; printf(Input the number of disks scanf(%d,&m); printf(The steps to moving %3d hanoi(m,A,B,C);(0) void hanoi(int n,char x,char y,char z)(1) (2) if(n=1)(3) move(x,z);(4) else(5) hanoi(n-1,x,z,y);(6) move(x,z);(7) hanoi(n-1,y,x,z);(8) (9) ABC3 A B
13、C 02 B A C 81 A B C 8ABC3 A B C 02 B A C 83 A B C 0栈空3 A B C 02 B A C 8175.4递归过程和运行时栈对对于于非非递递归归函函数数,调调用用函函数数在在调调用用被被调调用用函函数数前前,系系统统要要保保存存以以下下两两类类信信息息:(1 1)调调用用函函数数的的返返回回地地址址;(2 2)调调用用函函数数的的局局部部变变量量值值。当当执执行行完完被被调调用用函函数数,返返回回调调用用函函数数前前,系系统统首首先先要要恢恢复复调调用用函函数数的的局局部部变变量量值值,然然后后返返回回调调用用函函数数的的返返回回地地址址。递递归归
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法 数据结构 算法 PPT 课堂 课件 递归
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内