递归及其在二叉树中的应用精选PPT.ppt
《递归及其在二叉树中的应用精选PPT.ppt》由会员分享,可在线阅读,更多相关《递归及其在二叉树中的应用精选PPT.ppt(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、递归及其在二叉树中的应用1第1页,此课件共14页哦二阶费波纳奇数列二阶费波纳奇数列二阶费波纳奇数列二阶费波纳奇数列具体实现如下:具体实现如下:具体实现如下:具体实现如下:long Fib(int n)long Fib(int n)long Fib(int n)long Fib(int n)if(n=0)return 0;if(n=0)return 0;if(n=0)return 0;if(n=0)return 0;if(n=1)return 1;if(n=1)return 1;if(n=1)return 1;if(n=1)return 1;return Fib(n-1)+Fib(n-2);re
2、turn Fib(n-1)+Fib(n-2);return Fib(n-1)+Fib(n-2);return Fib(n-1)+Fib(n-2);2第2页,此课件共14页哦二、递归函数适用的场合二、递归函数适用的场合 在解决现实问题中,对于求解一个复杂的或者问题规模较大的在解决现实问题中,对于求解一个复杂的或者问题规模较大的在解决现实问题中,对于求解一个复杂的或者问题规模较大的在解决现实问题中,对于求解一个复杂的或者问题规模较大的问题,可以将其问题,可以将其问题,可以将其问题,可以将其划分为一些简单的或者规模较小的问题划分为一些简单的或者规模较小的问题划分为一些简单的或者规模较小的问题划分为一
3、些简单的或者规模较小的问题进进进进行解决,如果这种划分满足:行解决,如果这种划分满足:行解决,如果这种划分满足:行解决,如果这种划分满足:所划分成的子问题性质与原来的大问题相同。所划分成的子问题性质与原来的大问题相同。所划分成的子问题性质与原来的大问题相同。所划分成的子问题性质与原来的大问题相同。当问题规模小到一定程度的时候直接有解。当问题规模小到一定程度的时候直接有解。当问题规模小到一定程度的时候直接有解。当问题规模小到一定程度的时候直接有解。对于满足以上条件的问题我们就可以考虑使用递归的方法求解。对于满足以上条件的问题我们就可以考虑使用递归的方法求解。对于满足以上条件的问题我们就可以考虑使
4、用递归的方法求解。对于满足以上条件的问题我们就可以考虑使用递归的方法求解。递归策略只需递归策略只需递归策略只需递归策略只需少量的程序少量的程序少量的程序少量的程序就可描述出解题过程所需要的就可描述出解题过程所需要的就可描述出解题过程所需要的就可描述出解题过程所需要的多次重复多次重复多次重复多次重复计算计算计算计算,大大地减少了程序的代码量。递归的能力在于,大大地减少了程序的代码量。递归的能力在于,大大地减少了程序的代码量。递归的能力在于,大大地减少了程序的代码量。递归的能力在于用有限的语用有限的语用有限的语用有限的语句来定义对象的无限集合。句来定义对象的无限集合。句来定义对象的无限集合。句来定
5、义对象的无限集合。3第3页,此课件共14页哦 hanoi hanoi塔问题塔问题问题描述:问题描述:问题描述:问题描述:假设有三个分别命名为假设有三个分别命名为假设有三个分别命名为假设有三个分别命名为X X X X、Y Y Y Y、Z Z Z Z的塔座,在的塔座,在的塔座,在的塔座,在X X X X塔座上叠放着塔座上叠放着塔座上叠放着塔座上叠放着n n n n个小盘压大盘的圆盘堆,要求将塔座个小盘压大盘的圆盘堆,要求将塔座个小盘压大盘的圆盘堆,要求将塔座个小盘压大盘的圆盘堆,要求将塔座X X X X上的上的上的上的n n n n个圆盘移至塔座个圆盘移至塔座个圆盘移至塔座个圆盘移至塔座Z Z Z
6、 Z上,并按同样顺序叠放。上,并按同样顺序叠放。上,并按同样顺序叠放。上,并按同样顺序叠放。要求:要求:要求:要求:1 1 1 1、每次只能移动一个圆盘;、每次只能移动一个圆盘;、每次只能移动一个圆盘;、每次只能移动一个圆盘;2 2 2 2、圆盘可以放在、圆盘可以放在、圆盘可以放在、圆盘可以放在X X X X、Y Y Y Y、Z Z Z Z中的任意塔座上;中的任意塔座上;中的任意塔座上;中的任意塔座上;3 3 3 3、任何时刻都不能将大盘压在小盘上;、任何时刻都不能将大盘压在小盘上;、任何时刻都不能将大盘压在小盘上;、任何时刻都不能将大盘压在小盘上;X XY YZ ZX XY YZ Z4第4页
7、,此课件共14页哦l l如果有一个盘子,直接从如果有一个盘子,直接从如果有一个盘子,直接从如果有一个盘子,直接从X X X X移到移到移到移到Z Z Z Z即可。即可。即可。即可。l l如果有如果有如果有如果有n n n n个盘子要从个盘子要从个盘子要从个盘子要从X X X X移到移到移到移到Z Z Z Z,Y Y Y Y作为辅助。问题可以转化为,先将上面作为辅助。问题可以转化为,先将上面作为辅助。问题可以转化为,先将上面作为辅助。问题可以转化为,先将上面n-1n-1n-1n-1个从个从个从个从X X X X移动到移动到移动到移动到Y Y Y Y,Z Z Z Z作为辅助,然后将第作为辅助,然后
8、将第作为辅助,然后将第作为辅助,然后将第n n n n个从个从个从个从X X X X移动到移动到移动到移动到Z Z Z Z,最后将剩余的,最后将剩余的,最后将剩余的,最后将剩余的n-1n-1n-1n-1个个个个从从从从Y Y Y Y移动到移动到移动到移动到Z Z Z Z,X X X X作为辅助。作为辅助。作为辅助。作为辅助。hanoi塔问题塔问题5第5页,此课件共14页哦Void hanoi(int n,char x,char y,char z)Void hanoi(int n,char x,char y,char z)Void hanoi(int n,char x,char y,char z
9、)Void hanoi(int n,char x,char y,char z)/将塔座将塔座将塔座将塔座X X X X上按直径由小到大且自上而下编号为上按直径由小到大且自上而下编号为上按直径由小到大且自上而下编号为上按直径由小到大且自上而下编号为1 1 1 1至至至至n n n n的的的的 n n n n个圆盘按规则搬到塔座个圆盘按规则搬到塔座个圆盘按规则搬到塔座个圆盘按规则搬到塔座Z Z Z Z上,上,上,上,Y Y Y Y作为辅助塔座。作为辅助塔座。作为辅助塔座。作为辅助塔座。/搬动操作搬动操作搬动操作搬动操作move(x,n,z)move(x,n,z)move(x,n,z)move(x,
10、n,z)if(n=1)if(n=1)if(n=1)if(n=1)move(x,1,z);/move(x,1,z);/move(x,1,z);/move(x,1,z);/将编号为将编号为将编号为将编号为1 1 1 1的圆盘从的圆盘从的圆盘从的圆盘从X X X X搬到搬到搬到搬到Z Z Z Z else else else else hanoi(n-1,x,z,y);/hanoi(n-1,x,z,y);/hanoi(n-1,x,z,y);/hanoi(n-1,x,z,y);/将将将将X X X X上编号为上编号为上编号为上编号为1 1 1 1至至至至n-1n-1n-1n-1的的的的 圆盘移到圆盘移
11、到圆盘移到圆盘移到Y Y Y Y,Z Z Z Z作辅助塔座作辅助塔座作辅助塔座作辅助塔座 move(x,n,z);/move(x,n,z);/move(x,n,z);/move(x,n,z);/将编号为将编号为将编号为将编号为n n n n的圆盘从的圆盘从的圆盘从的圆盘从X X X X搬到搬到搬到搬到Z Z Z Z hanoi(n-1,y,x,z);/hanoi(n-1,y,x,z);/hanoi(n-1,y,x,z);/hanoi(n-1,y,x,z);/将将将将Y Y Y Y上编号为上编号为上编号为上编号为1 1 1 1至至至至n-1n-1n-1n-1的的的的 圆盘移到圆盘移到圆盘移到圆盘
12、移到Z Z Z Z,Y Y Y Y作辅助塔座作辅助塔座作辅助塔座作辅助塔座 hanoi塔问题塔问题6第6页,此课件共14页哦void PreOrderTraverse(BiTree T)void PreOrderTraverse(BiTree T)void PreOrderTraverse(BiTree T)void PreOrderTraverse(BiTree T)/采用二叉链表存储结构先序遍历二叉树采用二叉链表存储结构先序遍历二叉树采用二叉链表存储结构先序遍历二叉树采用二叉链表存储结构先序遍历二叉树T T T T的递归算法的递归算法的递归算法的递归算法 if(T)if(T)if(T)if
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 及其 二叉 中的 应用 精选 PPT
限制150内