《递归算法梁》PPT课件.ppt
《《递归算法梁》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《递归算法梁》PPT课件.ppt(30页珍藏版)》请在三一办公上搜索。
1、第6章递归算法,主讲:梁宝兰,2,第 6 章 递归算法,主要内容:,递归的概念递归算法的执行过程递归算法的设计方法递归过程和运行时栈递归算法的效率分析递归算法到非递归算法的转换,3,递归算法 直接或间接调用自身的算法称为递归算法1、问题的定义是递归的 例:阶乘函数定义,6.1 递归的概念,4,2、问题的解法存在自调用例:在有序数组a中查找是否存在元素x。二分查找思想:在alowahight(low为寻找区域中开始处下标,high则为结束处的下标)寻找是否存在元素x;若lowhigh,则不存在x,返回-1;否则,求出中间元素下标mid=(low+high)/2;若amid=x,则查找成功返回mi
2、d的值;若amidx则在alowamid-1间继续寻找;若amidx则在amid+1ahigh间继续寻找;,6.1 递归的概念,5,在有序表中查找21:,第一次比较:low=0,high=10,mid=5;amid21;则high=mid-1=4,并在alowahigh中继续查找;,第二次比较:low=0,high=4,mid=2;amid21;则low=mid+1=3,并在alowahigh中继续查找;,第三次比较:low=3,high=4,mid=3;amid=21;则返回mid的值;,6,在有序表中查找20:,第一次比较:low=0,high=10,mid=5;amid20;则high=
3、mid-1=4,并在alowahigh中继续查找;,第二次比较:low=0,high=4,mid=2;amid20;则low=mid+1=3,并在alowahigh中继续查找;,第三次比较:low=3,high=4,mid=3;amid20;则high=mid-1=2,并在alowahigh中继续查找;,第四次比较:lowhigh,20不存在数组中,返回-1;,7,/算法实现int bin_search(node r,int low,int high,ElemType k)int mid;if(lowk)return bin_search(r,low,mid-1,k);/左 else retu
4、rn bin_search(r,mid-1,high,k);/右,6.1 递归的概念,8,6.2 递归算法的执行过程,/求阶乘的递归程序int fact(int n)int x,y;if(n0)cout“error!”endl;return-1;if(n=0)return 1;else x=n-1;y=fact(x);return n*y;void main()int fn;fn=fact(3);coutfnendl;,9,n=3的阶乘递归函数执行过程,保护现场,保护现场,保护现场,保护现场,恢复现场,恢复现场,恢复现场,恢复现场,6.2 递归算法的执行过程,10,函数调用的现场保护与现场恢复
5、:1)当前指令地址 在转到被调用函数前,保存当前主调函数执行的指令地址;当被调用函数执行完毕后,按照栈顶中所保存的指令地址,转至该指令处继续往下执行。2)本函数的局部变量值。在转到被调用函数前,保存当前主调函数的局部标量;当函数调用返回时,根据栈中队局部变量的值恢复主调函数的局部变量。,6.2 递归算法的执行过程,11,12,根据栈中内容,恢复fact(1)现场,根据栈中内容,恢复fact(2)现场,根据栈中内容,恢复fact(3)现场,根据栈中内容,恢复main()现场,返回地址,1,返回地址,1,返回地址,2,6,返回地址,13,6.3 递归算法的设计方法,用递归算法求解问题的充分必要条件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归算法梁 递归 算法 PPT 课件

链接地址:https://www.31ppt.com/p-5611688.html