- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章-递归(高级程序设计)
本章主要内容:
1、递归的概念:什么是递归,种类,及递归求解方法
2、递归过程的机制与利用递归工作栈实现递归的方法
3、利用递归解决问题的分治法和回溯法
3、迷宫问题的递归思路及利用栈实现的非递归解法
本章重点:递归的基本概念及其算法设计。
本章难点:递归模拟及其分析。;6.1递归的概念
定义: 若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;而且一个过程直接地或间接地调用自己,则称这个过程是递归的过程。;6.2递归算法及其执行过程
(1)用于某些概念的定义:
阶乘: if ( n0 ) n ! = n ( n-1 ) !
if ( n=0 ) n ! = 1
单链表结点:
struct node{
datatype data
struct node * Link;
}
二叉树:二叉树是数据元素的有穷集合,它或者为空集(空二叉树),或者由一个根元素和其下的两棵互不相交??二叉树(左子树和右子树)构成。; 递归算法的一般形式:
void p (参数表) {
if (递归结束条件)可直接求解步骤;-----基本项
else p(较小的参数);------归纳项
} ;二分查找;用递归函数实现上述查找:
定义递归函数binsrch(s,r,x) ,s是所要搜索数列的起始下标,r是终止下标,x为所要搜索的值。在binsrch函数中实现这样的功能:首先查找a[m=(n+1)/2]和x的关系。如果xam ,那么就递归调用binsrch(m+1,r,x),否则如果x am 那么就递归调用binsrch(r,m-1,x),否则如果x= am ,那么就输出当前m的值,并返回,再否则就返回-1,代表数列中没有与x相等的数。;6.3 递归算法的设计方法;例 Hanoi问题;运行结果:
⑴ 只有一个盘子的情况:(最简1步)
Input the number of disks: 1
The step to moving 1 disks
⒈A----C
⑵ 有二个盘子的情况:(最简3步)
Input the number of disks: 2
The step to moving 2 disks
⒈A----B
⒉A----C
⒊B----C;6.4 递归过程与运行时栈
文档评论(0)