07141326汉诺塔-课程设计
汉诺塔课程设计

汉诺塔课程设计一、教学内容:1、了解汉诺塔的历史。
2、讲解汉诺塔的游戏规则。
二、课程设计目的:1、让伙伴们了解汉诺塔的历史,勾起孩子们的学习兴趣,让伙伴们更加热爱数学。
2、在掌握汉诺塔玩法的基础上,锻炼伙伴们的观察力,变通里,和右脑开发。
3、增强伙伴们的空间想象能力和动手能力。
4、让伙伴们体会到数学的神奇,从而对数学产生更加浓厚的兴趣。
三、培养技能:观察力、想象力、变通里、右脑开发。
四、所需工具:汉诺塔、记号笔。
五、教学流程概述:第一节课:1、讲一个关于汉诺塔的故事。
2、带领伙伴们一起观察和了解汉诺塔的游戏规则。
(以三盘为例说明)(30分钟)第二节课:汉诺塔4盘的移法。
(30分钟)第三节课:汉诺塔5盘的移法。
(30分钟)第四节课: 汉诺塔月底考核。
(30分钟)六、教学流程详细解读:第一节课:让伙伴们了解汉诺塔的历史,勾起孩子们的学习兴趣,让伙伴们更加热爱数学。
1、讲关于汉诺塔的故事:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。
印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。
不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。
僧侣们预言,当所有的金片都从梵天穿好的那根针上移2、告诉伙伴们游戏规则:以三个环为例说明:(一)先让伙伴们自己观察有几个柱子,有几个盘,并且盘是怎么排列的?答:有三根相邻的柱子,第一根柱子上从下到上放着3个不同大小的圆盘,并且顺序是由大到小依次叠放。
(二)分别为这3个相邻的柱子编号A柱、B柱、C柱;在为这3个圆盘编号盘1、盘2、盘3。
让伙伴们自己动脑想想:如何要把A柱上的3个盘子一个一个移动到C柱上,并且每次移动同一根柱子上都必须保持大点的盘子在下,小点的盘子在上。
最后也要使移动到C 柱的圆盘从下到上按照盘3,2,1金字塔的形状排列。
(三)带领伙伴们一起动手操作:(1)、盘1移动到C柱。
汉诺塔游戏课程设计

汉诺塔游戏课程设计一、课程目标知识目标:1. 学生能理解汉诺塔游戏的起源、规则及数学原理。
2. 学生能掌握递归算法的基本概念及其在汉诺塔游戏中的应用。
3. 学生能运用数学归纳法推导汉诺塔游戏的步数与盘子数之间的关系。
技能目标:1. 学生能够运用所学知识,独立设计并解决汉诺塔游戏的不同层次问题。
2. 学生能够通过小组合作,提高问题解决能力和团队协作能力。
3. 学生能够运用信息技术工具,进行汉诺塔游戏模拟和数据分析。
情感态度价值观目标:1. 学生对数学产生兴趣,认识到数学与游戏的紧密联系,提高学习数学的积极性。
2. 学生在游戏中培养逻辑思维能力和创新精神,增强自信心和自主探究意识。
3. 学生通过合作与交流,培养团队精神,学会尊重他人,形成积极向上的人生态度。
课程性质:本课程以汉诺塔游戏为载体,结合数学知识和算法,培养学生的逻辑思维能力、问题解决能力和团队协作能力。
学生特点:五年级学生具有一定的数学基础和逻辑思维能力,对游戏具有浓厚兴趣,但可能对递归算法等抽象概念理解有限。
教学要求:结合学生特点,教师需采用生动有趣的教学方法,引导学生主动探究,注重培养学生的实践操作能力和团队协作精神。
通过本课程的学习,使学生将所学知识应用于实际情境,提高学生的综合素养。
二、教学内容1. 汉诺塔游戏背景介绍:包括汉诺塔的起源、发展及其在数学游戏中的地位。
相关教材章节:数学游戏与趣味数学2. 汉诺塔游戏规则及数学原理:讲解汉诺塔的游戏规则,引导学生发现汉诺塔移动盘子过程中的数学原理。
相关教材章节:组合数学基本概念3. 递归算法及其在汉诺塔游戏中的应用:介绍递归算法的概念,通过实例演示递归算法在汉诺塔游戏中的运用。
相关教材章节:算法与程序设计4. 汉诺塔游戏步数与盘子数之间的关系:运用数学归纳法,推导汉诺塔游戏中盘子数与步数之间的关系。
相关教材章节:数学归纳法5. 汉诺塔游戏实践操作:组织学生进行汉诺塔游戏实践,培养学生动手操作能力和问题解决能力。
课程设计汉诺威塔

汉诺威塔问题的来源和历史背景
01
02
04
03
02
CHAPTER
汉诺威塔问题分析与建模
问题描述
汉诺威塔问题是一个经典的递归问题,涉及三个柱子和一系列大小不同的盘子。目标是将所有盘子从一个柱子移动到另一个柱子,每次只能移动一个盘子,并且任何时候都不能将一个较大的盘子放在较小的盘子上面。
因此,空间复杂度为O(n)。
04
CHAPTER
非递归算法实现与性能比较
将所有盘子按从大到小的顺序依次放入第一个栈
从第一个栈中取出最大的盘子,放入第三个栈
如果第一个栈中还有盘子,则重复以上步骤,直到所有盘子都移动到第三个栈为止
如果第二个栈不为空,则将第二个栈中的所有盘子依次取出并放入第一个栈,直到第二个栈为空
迭代方法
另一种非递归方法是使用迭代方法。可以通过维护一个状态变量来跟踪当前需要执行的操作,并根据状态变量的值选择相应的操作进行执行。这种方法需要仔细地设计状态转移逻辑和操作顺序。
优化与改进
针对非递归算法,可以考虑使用优化技术来提高性能。例如,可以使用动态规划来避免重复计算相同子问题的解,或者使用并行计算来加速算法的执行速度。
课程设计汉诺威塔
目录
引言汉诺威塔问题分析与建模递归算法实现与性能分析非递归算法实现与性能比较汉诺威塔问题拓展与应用课程设计总结与展望
01
CHAPTER
引言
学习和掌握递归算法的基本原理和实现方法
通过解决汉诺威塔问题,提高学生的算法设计和分析能力
培养学生的计算思维和解决问题的能力
汉诺威塔问题的基本规则和玩法
递归终止条件
02
当只有一个盘子时,直接将其移动到目标柱子即可。这是递归的终止条件。
汉诺塔非递归课程设计

汉诺塔非递归课程设计一、课程目标知识目标:1. 理解汉诺塔问题的基本原理和数学背景;2. 掌握非递归算法解决汉诺塔问题的步骤和方法;3. 能够运用数学符号和逻辑推理描述非递归算法的执行过程。
技能目标:1. 培养学生运用算法思维解决问题的能力;2. 提高学生编写和执行非递归算法的编程技能;3. 培养学生通过团队合作,共同探讨和解决复杂问题的协作能力。
情感态度价值观目标:1. 激发学生对算法和计算机科学的兴趣,培养积极的学习态度;2. 培养学生面对困难时,勇于尝试、持续探究的精神;3. 增强学生通过逻辑思考和算法设计解决问题的自信心。
课程性质:本课程为信息技术与数学学科交叉的实践性课程,旨在通过汉诺塔非递归算法的学习,提高学生的逻辑思维、编程能力和团队协作精神。
学生特点:学生处于具备一定数学基础和编程能力的年级,对算法和计算机科学有一定了解,但需要进一步培养逻辑思维和解决实际问题的能力。
教学要求:课程应注重理论与实践相结合,通过实际操作和团队合作,使学生掌握非递归算法解决汉诺塔问题的方法,并能够在实际情境中运用。
教学过程中,注重分层指导,关注学生个体差异,确保每位学生都能在学习中取得进步。
二、教学内容本课程依据课程目标,结合教材内容,制定以下教学大纲:1. 汉诺塔问题导入:介绍汉诺塔问题的起源、发展及其数学背景,使学生了解汉诺塔问题在算法领域的地位和价值。
2. 汉诺塔问题非递归算法原理:- 分析递归算法的局限性和非递归算法的优势;- 引导学生探讨非递归算法的基本思想;- 梳理非递归算法的执行步骤。
3. 编程实践:- 指导学生使用教材中推荐的编程语言(如Python)编写非递归算法解决汉诺塔问题;- 分析和讨论编程过程中的常见问题和解决方法。
4. 案例分析与团队合作:- 提供实际案例,让学生分组讨论并设计非递归算法;- 组织课堂展示,分享各组的解决方案,促进学生之间的交流和学习。
教学内容关联教材章节如下:- 汉诺塔问题及其数学背景:教材第3章第1节;- 非递归算法原理与实现:教材第4章第2节;- 编程实践与案例分析:教材第5章。
小学数学游戏--汉诺塔--教学设计

小学数学游戏--汉诺塔--教学设计(总4页)-本页仅作为预览文档封面,使用时请删除本页-(课前准备:教师:课件、汉诺塔、翻页笔、卡片、磁铁。
学生:汉诺塔2人一个、笔、练习本。
遵守纪律,做好记录,让操作时再操作,积极发言)汉诺塔教学设计稿(一)创设故事情境,激发学习兴趣(介绍游戏)师:同学们,喜欢玩游戏吗?今天我们玩的游戏一个和神话故事有关。
在印度有个古老的传说:在世界中心的圣庙里,一块黄铜板上插着三根宝石柱子。
天神在创造世界的时候,在其中一根柱子上从下到上穿好了由大到小的64个金环,这就是汉诺塔。
不论白天黑夜,总有一个僧侣按照下面的法则移动这些金环:一次只移动一个金环。
不管在哪根柱子上,小金环必须在大金环上面。
僧侣们预言,当所有的金环都从A柱移到C柱上时,世界将会在一声霹雳中消灭,世界末日随之到来!师:世界末日真的会到来吗?师:虽然这只是个神话故事,但其中却蕴含着数学问题。
你能在这个神话故事中发现什么数学问题呢?生:把金环全部移到另一个柱子上需要多长时间?师:这个问题提的非常好。
猜一猜把64个金环全部移到C柱上需要多长时间呢?生1:……师:到底需要多长时间呢实践出真知,今天我们就一起来玩一玩,揭开“汉诺塔”的神秘面纱。
(板书课题:汉诺塔)(二)介绍玩法,自主探索。
(1)介绍规则师:大家看,这就是我们要玩的汉诺塔。
为了操作方便,我们把这3根柱子分别叫A柱、B柱、C 柱。
A柱上的这10个环从上到下从小到大依步叫1环2环3环……10环。
你能不能借助B柱把A柱上的圆环移到c柱而不改变圆环的上下顺序,最少需要移动多少步。
师:刚才故事中僧侣们是按照什么样的法则来移动金环的?生:一次只移动一个金环。
不管在哪根柱子上,小金环必须在大金环上面。
(2)强调游戏规则:师:一步只能移动一个金环。
不管在哪根柱子上,小金环必须在大金环上面。
(板贴)一次一环,大不压小师:同桌两人相互说一下法则。
(PPT展示法则,老师在教具汉诺塔上只放一个环)(三)引导探究,尝试游戏师:这个汉诺塔上有64个金环,要一个一个操作,感觉怎么样?生:太麻烦了。
《新汉诺塔》课程设计

《新汉诺塔》课程设计届课程设计《汉诺塔》课程设计说明书学生姓名学号所属学院信息工程学院专业计算机科学与技术班级指导教师教师职称讲师塔里木大学教务处制目录前言 01. 数据结构简介 02. 应用技术领域及范围 03.设计的原理、方法和主要内容 (1)正文 (2)1. 设计目的 (2)2. 设计要求 (2)3.需求分析 (3)3.1 汉诺塔的由来: (3)3.2汉诺塔与宇宙寿命: (4)4. 问题分析: (7)5. 概要设计 (8)5.1设计思想 (8)5.2 实现方法 (8)5.3 主要模块 (8)5.4 模块关系 (8)6. 详细设计 (9)6.1 功能设计 (9)6.2 算法分析 (10)6.3 编写程序如下: (10)6.4 程序执行过程分析: (12)7. 调试分析: (13)8.小结 (17)致谢 (18)参考文献 (19)前言1. 数据结构简介数据结构是计算机程序设计的重要理论设计基础,它不仅是计算机学科的核心课程,而且成为其他理工专业的热门选修课。
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。
在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。
“数据结构”在计算机科学中是一门综合性的专业基础课。
数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。
2. 应用技术领域及范围汉诺塔的应用技术是来自于我们所学的数据知识和数学方面的学科,其中用到了数学递归,函数和数据的函数以及C语言等方面的知识。
汉诺塔牌课课程设计

汉诺塔牌课课程设计一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:通过本课程的学习,学生需要掌握汉诺塔牌的基本概念、规则和策略,了解其背后的数学原理和逻辑思维。
2.技能目标:学生能够运用汉诺塔牌的规则和策略进行游戏,提高解决问题的能力,培养逻辑思维和抽象思维。
3.情感态度价值观目标:通过汉诺塔牌的学习和游戏,学生能够培养团队合作意识,增强自信心,提高自我认知和自我激励能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.汉诺塔牌的基本概念和规则,包括牌的种类、牌面数值和游戏的目标。
2.汉诺塔牌的策略和技巧,包括牌序的安排、牌型的组合和游戏的节奏控制。
3.汉诺塔牌的数学原理和逻辑思维,包括排列组合、递归思想和贪心算法。
4.汉诺塔牌的游戏实践,包括个人游戏和团队游戏的规则和技巧。
三、教学方法为了实现本课程的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解汉诺塔牌的基本概念、规则和策略,使学生了解和掌握相关知识。
2.案例分析法:通过分析典型的汉诺塔牌游戏案例,使学生理解和运用相关策略和技巧。
3.实验法:通过实际操作汉诺塔牌游戏,使学生锻炼和提高解决问题的能力。
4.小组讨论法:通过团队合作和讨论,使学生培养团队合作意识和沟通交流能力。
四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择一本适合学生年级和知识深度的汉诺塔牌教材,作为学生学习的主要参考资料。
2.多媒体资料:制作相关的PPT、视频等多媒体资料,以便于学生更直观地理解和掌握知识。
3.实验设备:准备足够的汉诺塔牌游戏道具,以便于学生进行实际操作和实验。
4.在线资源:利用互联网资源,提供相关的学习、论坛和在线游戏,以便于学生自主学习和交流。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过观察学生在课堂上的参与程度、提问回答和小组讨论的表现,评估学生的学习态度和积极性。
汉诺塔c课程设计

汉诺塔c 课程设计一、教学目标本课程的学习目标包括:知识目标:学生能理解汉诺塔问题的定义、解法及其应用;掌握汉诺塔问题的算法思想和编程方法。
技能目标:学生能够运用汉诺塔问题的解法解决实际问题,提高逻辑思维和问题解决能力;学会使用编程语言实现汉诺塔问题的算法。
情感态度价值观目标:学生培养对计算机科学的兴趣,增强创新意识和团队协作精神,认识汉诺塔问题在现实生活中的重要性。
二、教学内容教学内容主要包括:1.汉诺塔问题的定义和背景;2.汉诺塔问题的解法及其证明;3.汉诺塔问题的算法分析;4.汉诺塔问题的编程实现;5.汉诺塔问题在现实生活中的应用。
三、教学方法本课程采用多种教学方法,包括:1.讲授法:讲解汉诺塔问题的定义、解法、算法和应用;2.讨论法:引导学生探讨汉诺塔问题的解决策略,培养团队协作能力;3.案例分析法:分析现实生活中的汉诺塔问题实例,提高学生的问题解决能力;4.实验法:让学生动手编程实现汉诺塔问题,培养实践操作能力。
四、教学资源教学资源包括:1.教材:选用权威、实用的汉诺塔问题教材,为学生提供理论基础;2.参考书:提供相关领域的参考书籍,丰富学生的知识体系;3.多媒体资料:制作课件、视频等多媒体资料,增强课堂教学的趣味性;4.实验设备:配置合适的计算机设备,确保学生能够顺利进行编程实践。
五、教学评估教学评估主要包括:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,占比20%;2.作业:评估学生完成作业的质量和效率,占比30%;3.考试:定期进行汉诺塔问题相关知识的考试,占比50%。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排教学安排如下:1.教学进度:按照教材和教学大纲进行教学,确保完成所有教学内容;2.教学时间:每周安排2课时,共10周;3.教学地点:教室。
教学安排应合理、紧凑,确保在有限的时间内完成教学任务,同时考虑学生的实际情况和需要。
七、差异化教学根据学生的不同学习风格、兴趣和能力水平,设计差异化的教学活动和评估方式,以满足不同学生的学习需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汉诺塔课程设计
报告
目录
一、需求分析 (3)
二、概要设计 (4)
三、详细设计 (6)
四、测试与分析 (7)
五、总结 (7)
六、附录:源程序清单 (8)
一、需求分析
1.1问题描述
汉诺塔(又称河内塔)问题是印度的一个古老的传说。
开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。
这是一个著名的问题,几乎所有的教材上都有这个问题。
由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:
18,446,744,073,709,551,615
这是一个天文数字,若每一微秒可能计算(并不输出)一次移动,那么也需要几乎一百万年。
我们仅能找出问题的解决方法并解决较小N值时的汉诺塔,但很难用计算机解决64层的汉诺塔。
后来,这个传说就演变为汉诺塔游戏:
1.有三根杆子A,B,C。
A杆上有若干圆盘
2.每次移动一块圆盘,小的只能叠在大的上面
3.把所有圆盘从A杆全部移到C杆上
经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动圆盘:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C
此外,汉诺塔问题也是程序设计中的经典递归问题。
将n个盘子从a座移动到c座可以分解为以下3个步骤:
(1)将a上n-1个盘借助c座先移到b座上。
(2)把a座剩下的一个盘移到c座上。
(3)将n-1个盘从c座借助于a座移到c座上。
1.2基本要求
(1)输入的形式和输入值的范围:
输入圆盘的数量,类型为整型,大于零。
(2)输出的形式:
运行结果为用字母表示移动盘子的方案,而并非是真正移动盘子。
(3) 程序所能达到的功能;
输入圆盘数量为定值时的移盘方案。
帮助我们更清晰的理解汉诺塔问题,及递归调用的应用。
二、概要设计
分析问题,找出移动圆盘的正确算法。
将n个盘子从a座移动到c座可以分解为以下3个步骤:
(1)将a上n-1个盘借助c座先移到b座上。
(2)把a座剩下的一个盘移到c座上。
(3)将n-1个盘从c座借助于a座移到c座上。
为了更清楚地描述算法,可以定义一个函数movedisc(n,a,b,c)。
该函数的功能是:将N个圆盘从A杆上借助C杆移动到B杆上。
这样移动N个圆盘的工作就可以按照以下过程进行:
1) hanoi(n-1,a,c,b);
2) 将一个圆盘从a移动到b上;
3) hanoi(n-1,c,b,a);
重复以上过程,直到将全部的圆盘移动到位时为止。
三、详细设计
子函数://这个函数的做用是以辅助位置为辅助,把n个盘从起始移向目的移动盘(盘的个数n,起始,辅助,目的)
{
如果(n大于0)
{
移动盘(n-1,起始, 目的,辅助);
输出 Move disc 盘编号 from pile 起始值 to pile 目的值;
移动盘(n-1,辅助, 起始,目的); }
否则结束;
}
主函数:
{
定义盘数n;
输出“Please enter the number of disks to be moved:”;
输入圆盘数目;
调用子函数;
}
四、测试与分析
Please enter the number of disks to be moved:3
Move disc 1 from pile A to pile B
Move disc 2 from pile A to pile C
Move disc 1 from pile B to pile C
Move disc 3 from pile A to pile B
Move disc 1 from pile C to pile A
Move disc 2 from pile C to pile B
Move disc 1 from pile A to pile B
Please enter the number of disks to be moved:4
Move disc 1 from pile A to pile C
Move disc 2 from pile A to pile B
Move disc 1 from pile C to pile B
Move disc 3 from pile A to pile C
Move disc 1 from pile B to pile A
Move disc 2 from pile B to pile C
Move disc 1 from pile A to pile C
Move disc 4 from pile A to pile B
Move disc 1 from pile C to pile B
Move disc 2 from pile C to pile A
Move disc 1 from pile B to pile A
Move disc 3 from pile C to pile B
Move disc 1 from pile A to pile C
Move disc 2 from pile A to pile B
Move disc 1 from pile C to pile B
五、总结
数据结构,目的就是要锻炼我们的抽象思维,我们可以根据以前学习的C
语言的基础,更灵活的运用其进行编程。
但我发现,就目前的这点只是储备,就现在的实践能力,真的很难实现太多复杂的程序,思前想后,我最总决定来做这个需要抽象思维多但程序相对好实现的汉诺他问题。
用以来巩固对知识的理解。
“数据结构”定义了诸多抽象数据类型。
如:栈、队列,串等。
这些存储结构在分析问题解决问题时发挥了重要的作用。
就我选的这一题目而言。
在分析问题时栈起了关键性的作用。
汉诺塔问题是典型的递归问题。
语句看似简单,但是如果不借助栈来分析问题,实属不易。
经过了几天的努力,数据结构课程设计这项任务终于完成。
在这几天里,克服了重重困难,从一头雾水到渐渐思路变得相对清晰明了。
我们可以从最简单的汉诺他问题中去分析其规律,对每一层移动都是相同的方式,所以站的递归显得尤为重要。
虽然都说“程序=数据结构+算法”,但我在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次课程设计实践。
我感受最深的一点是:以前用C编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。
感觉有点像张飞打仗,有勇无谋,只要能完成任务就行。
但现在编程感觉完全不同了。
在编写一个程序之前,自己能够综合考虑各种因素,首先选取自己需要的数据结构,是树还是图或是别的什么汉诺塔之类?然后选定一种或几种存
储结构来具体的决定后面的函数的主要风格。
最后在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。
这样,即使在完整的程序还没有写出来之前,自己心中已经有了明确的原图了。
这样无形中就提高了自己编写的程序的质量。
另外,我还体会到深刻理解数据结构的重要性。
只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。
了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。
总之,我会继续我的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步不断提高的。
六、源程序清单
汉诺塔问题:有三个柱子,编号A、B、C,在A柱上有n个圆盘,直径不同,按直径从大到小依次叠放在柱子上,要求:把A柱上的圆盘借助B柱移动到C 柱。
每次移动一个,任何情况下保证大的在下,小的在上。
设计并实现该算法,输出搬动圆盘过程。
*/
#include"stdio.h"
void hanoi(int n,char a,char b,char c)
{if(n>0)
{ hanoi(n-1,a,c,b);
printf("\n Move disc %d from pile %c to pile %c",n,a,c);
hanoi(n-1,b,a,c); }}
void main()
{int n;
printf("Please enter the number of disks to be moved:");
scanf("%d",&n);
hanoi(n,'A','B','C');
}
参考文献
[1]徐建民,《语言程序设计》,电子工业出版社,2002年
[2]谭浩强,张基温,唐永炎,《C语言程序设计教程》,高等教育出版社
[3]谭浩强,《C程序设计》,清华大学出版社,2005年7月第3版
[4]谭浩强,《C程序设计题解与上机指导》,清华大学出版社,2005年7月第3版。