- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程中递归教学深入探讨
数据结构课程中递归教学深入探讨
摘要:递归算法在数据结构课程中既是重点又是难点,对递归算法理解和把握直接决定了很多算法的理解。该文通过对递归的概念,举例说明利用递归求解问题的步骤以及通过分析二叉树的前序遍历算法来剖析递归的执行过程,最后给出了递归的直观理解。
关键词:数据结构;递归;二叉树;递归生成树
中图分类号:TP311.12文献标识码:A文章编号:1009-3044(2011)14-3382-02
Recursive Data Structures Course in the Depth of Teaching
YAO Jun-ming1, XING Dan1, LI Qun1, GAO Ting2
(1. College of Information Engineering, Jining Medical College, Rizhao 276826, China; 2. The CBRC Rizhao Field Office, Rizhao 276826, China)
Abstract: Recursive algorithm in data structures in the class is a key and difficult to understand and hold a recursive algorithm to many algorithms to understand. this article on the concept of recursive examples illustrate the use of recursive solve problems through the steps and analysis of the fork of the tree in order before the algorithm to analyze the recursive implementation, and finally gave out a recursive intuitive understanding.
Key words: datastructure;recursivealgorithm;linearlist;recursive generate tree
1 递归在“数据结构与算法”课程中的重要性
在“数据结构与算法”课程中,主要是学习线性结构(包括线性表、栈、串),树型结构(包括二叉树、树、森林)、图状结构(图)、查找和排序,介绍这些数据结构的逻辑结构、存储结构以及操作,而诸如单链表、广义表、二叉树以及图,二分查找,堆排序等等,结构本身就是递归的,由此可知,能够深刻理解递归的概念和内涵决定了对这些数据结构的逻辑结构的理解,也影响着对这些数据结构上所实施操作的把握。因此,有着重要的意义。
2 什么是递归
递归是一种方法论,是把难解的大的问题划分成小的问题,而小的问题本身和大的问题具有相似性。递归称为是自己调用自己的过程。
递归有三种:
1) 有许多数学函数是递归定义的。
2) 有的数据结构,由于结构本身固有的递归特性,则它们的操作可递归地描述。
3) 还有一类问题,虽然问题本身没有明显的递归结构,但用递归求解更简单。
3 如何利用递归求解问题
递归是由两部分组成的,一是递归出口,另一部分是递归体。所以在利用递归求解问题时,首先看一下该类问题是否具有递归的特性,即大问题和小问题之间是否具有相似性(而正如单链表、二叉树、树以及图本身结构固有的特性,很多操作可由递归来实现),如果有,再考虑最简单的情况,即递归出口,然后考虑假设把大额我能提分解成小问题如果解决完,当前应当如何做,而小问题本身又是这样的一个问题,即调用自身,只不过是参数(规模)上的变化,下面用几个实例来说明。
例1:汉诺塔问题
1) 首先考虑大问题和小问题是否具有相似性。
移动n-1个圆盘和移动n个圆盘的问题是相类似的,只不过是问题规模上的减少,因此可以使用递归来解决。
2) 考虑最简单的情况,即递归出口。当n=1时,直接将这1个圆盘从a塔移到c塔即可。
3) 假设已经将n-1个圆盘从a塔移到了b塔,接下来只需直接将编号为n的圆盘从a塔移到c塔,然后再将剩下的n个圆盘从b塔移至c塔即可,而如何将n个圆盘从a塔移至b塔和从b塔移至c塔又是和本身相似的问题,直接电泳自身即可,只不过是问题规模上的变化。
例2:二叉树的后序遍历问题
1) 考虑大问题和小问题的相似性,二叉树的结构是由根、左孩子以及右孩子组成,后序遍历二叉树和左孩子和右孩子与遍历整棵二叉树的问题是相似,因此可
文档评论(0)