5、递归算法的应用.docVIP

  • 8
  • 0
  • 约2.11千字
  • 约 21页
  • 2017-12-12 发布于河南
  • 举报
5、递归算法的应用

数学与计算机学院 课程设计说明书 课 程 名 称: 算法设计与分析-课程设计 课 程 代 码: 7106620 题 目: 递归算法的应用 年级/专业/班: 学 生 姓 名: 学   号: 开 始 时 间: 2010 年 12 月 27 日 完 成 时 间: 2011 年 01 月 07 日 课程设计成绩: 学习态度及平时成绩(30) 技术水平与实际能力(20) 创新(5) 说明书撰写质量(45) 总 分(100) 指导教师签名: 年 月 日 算法设计与分析 课程设计 任务书 学院名称: 数学与计算机学院 课程代码: 7106620 专 业: 信息与计算科学 年 级: 2007级 一、设计题目 递归算法的应用 二、主要内容 实现多种问题的递归算法并分析、总结,给出结论。 三、具体要求 (1)给出0\1背包问题的递归算法和程序; (2)给出n阶hanoi塔的递归算法和程序; (3)给出棋子移动的递归算法和程序; (4)给出n个元素全排列的递归算法和程序; (5)给出约瑟夫问题的递归算法和程序; (6)总结哪些问题可能用递归算法实现。 四、主要技术路线提示 掌握算法设计与分析的理论部分的内容,同时将理论运用于实践,提高综合应用算法设计的能力,通过分析算法进而对算法进行优化。 五、进度安排 共计两周时间,建议进度安排如下: 选题,应该在上机实验之前完成 需求分析、概要设计上机前完成,可分配2学时老师检查和指导 详细设计上机前完成,可分配2学时老师检查和指导 编程、调试和分析程序可分配12学时。 程序答辩、说明书撰写4学时 六、 推荐参考资料 教 材:《算法设计与分析》 宋文等编 重庆大学出版社,2001 参考书:[1] 《算法设计与分析》 周培德 电子工业出版社,2000 [2] 《算法设计与分析》 王晓东 电子工业出版社,2004 指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月 日 摘 要 递归做为一种算法在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰。 本文就从几个大家所熟悉的递归问题来进一步认识和了解递归这种重要的算法思路,比如hanoi塔、全排列、约瑟夫问题等等。 关键字:递归,程序设计,算法 目 录 1. 绪论 1 1.1 问题的提出 1 1.2 任务与分析 2 2. 0-1背包 3 2.1 算法 3 2.2 程序 4 3. Hanoi塔 6 3.1 算法 6 3.2 程序 6 4. 棋子移动 8 4.1 算法 8 4.2 程序 9 5. 全排列 11 5.1 算法 11 5.2 程序 11 6. 约瑟夫问题 13 6.1 算法 13 6.2 程序 13 参考文献 16 绪论 1.1 问题的提出 一个过程或函数直接或间接地调用自己本身称为递归,现在我们以具体例题来分析讲解递归问题。 递归的一般思路:把原问题分解为更小的子问题,再从子问题里慢慢寻找原问题的解。解题时首先列出递归表达式,然后用程序语言的方式把他表现出来。往往递归都可转化为循环或者模拟调用栈来实现,但是递归表达更利于理解。 1.1.1 递归的要求 递归算法所体现的“重复”一般有三个要求:   一是每次调用在规模上都有所缩小(通常是减半);    二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);    三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。 1.1.2 递归的应用 递归算法一般用于解决三类问题: (1)数据的定义是按递归定义的。(Fibonacci函数) (2)问题解法按递归算法实现。(回溯) (3)数据的结构形式是按递归定义的。(树的遍历,图的搜索) 1.1.3 递归的特点 递归就是在过程或函数里调用自身。    在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。    递归算法解题通常显得很简洁,但递归算法解题的运行

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档