- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 期 总第 期 机 械 管 理 开 发 年
月 6 ( 99 2007 12 No.6 (SUM No.99 MECHANICAL MANAGEMENT AND
DEVELOPMENT Dec.2007 数据结构中递归算法的研究与实现 郭韶升 张 炜 (青 岛科技大学信息科学技术学 院 山东 青 岛 266042 【摘 要 】 递归是一种重要 的编程工具 , 在数据 结构 中多处使用 。递 归算法掌握 的好坏直接 影 响数据 结构 的学 习 , 从数据结构 的角度 出发 , 提 出了一种有效 的递归教学方法 。 【关键词 】 递归算
法 ;数据结构 ;教学方法 【中图分类号 】 【文献标识码 】 【文章编号 】 ( G462 A 1003- 773X 2007 06- 0090- 02 0引 言 个非递归函数 , 反映了递归 问题 的结构 。 递归是软件设计 的重要方法和技术 。递归省略了 (2 递归原理 。递归是把一个不能或不好直接求 程序设计 中许 多细节操作 , 简化 了程序设计过程 , 递 解 的 “大 问题 ”转化为一个或几个 “小 问题 ”来解决 ; 再 归 函数结构清 晰 、程序 易读 , 而且它 的正确性容 易得 把这些 “小 问题 ”进 一步转化 为更 小 的 “小 问题 ”来解 到验
证 。在许 多实际问题求解 时, 采用递归方法要 比 决 ;如此 “回推 ”直,到每个 “小问题 ”都可直接解决 (此 非递归方法容易实现 。 时 “回推 ”到递归出口 ;再从递归出
口返 回到原 问题 的 1 递归是程序设计 中强有力 的一个工具 求解过程 [2] 。 (1 有很多数学函数是递归定义 的, 例如大家熟 求 f (Sn 的 “回推 ”过程为 : f (Sn →f (Sn-
1 → 悉 的阶乘 函数 Fact (n = ! 1 若 n = 0 。 → f (S1 → f (S0。一旦遇到递归出 口, “回推 ”过程结 ·(若 n Fact n- 1 n 0 束, 开始求值过程 。所 以 “回推 ”过程是 “量变 ”过程 , 即 (2 有 的数据 结构 , 例如二叉树 、广义表 , 由于结构本 原来 的 “大 问题 ”在慢慢变小 , 但 尚未解决 , 遇到递归出 身固有 的递归特性 , 它 的许多操作可按递归描述 。
(3 口后 , 便发生 了 “质变 ”即,递归 问题变成 了直接 问题 。 还有一类 问题 , 虽然 问题本身没有 明显 的递归性 , 但 上面 的求解过程如下 : f (S =M →f (S =g (f (S , 用递归求解 比迭代求解更简单 , 如八皇后 问题 、 0 0 1 0 Hanoi 塔 问题等 。(4 由于
递归在 “数据结构 ”中多处使用 , 因 C1 → f (S2 = g (f (S1 , C2 → → f (Sn此= g (f 正确理解并准确使用递归 , 对于提高程序设计 能力 (Sn - 1 , Cn 。这样 f (Sn 便计算出来 了。可 以看 出 , 求 的培养是非常重要 的。 值过程是从一个 已知值推 出下一个值 。实际上这是一 鉴于上述情况 , 结合 自己的教学实践和学生 的实 个递推过
程 。因此 , 一个递归 问题可 以分为 “回推 ”和 际情况 , 总结 出递 归 的讲解方法 : 首先确 定求解 问题 “递推 ”两个阶段 , 要经过许多步才能求 出最后 的值 。 的递 归模
型 , 了解递 归原理 ; 在此基础上介绍 了一种 (3 递归程序 的阅读 。阅读递归程序 的简单直观 阅读递归程序 的有效方法 , 使学生在对递归程序有一 方法是 图形化方法 。该方法借助具体 的图形 , 运用遍历 定熟练程度后 , 开始递归程序 的设计 [1] 。树 的思考 , 对抽象 的函数递归调用 的运行轨迹进行层 2 递归算法 的分析与设计 层剖析 , 使函数递归调用 的过程如折扇一样展开 , 形象 (1 递归模型 。递归算法 的设计要先确定递归模 化地呈现在学生面前 。该方法描述为 : 1 按次序写 出 型 。一个
递归模型 由递归出 口和递归体两部分组成 , 程序 当前调用层上实际执行 的各语句 , 并用有 向弧表 前者确定递归到何 时为止 , 后者确定递归 的方式 。递 示该语句 的执行次序 。2 对程序 中每个调用语句 , 写 归出 口即结束递归过程 的条件 。计算机是用栈来管理 出其调用形式 , 并在其下边写 出本次调用 函数实际执 递 归 的 , 如果不设置 结束递 归 的条件 , 无 限制 的递 归 行 的语句 。同时在被调层 的前面注 明各形参 的值 ;从调 调用必然造成 因栈溢 出而 中断或死机 。所 以要使递归 用操作处画一有 向弧指 向被调函数 的入
原创力文档


文档评论(0)