文档视界 最新最全的文档下载
当前位置:文档视界 › 汉诺塔问题解决及游戏方案

汉诺塔问题解决及游戏方案

汉诺塔问题解决及游戏方案
汉诺塔问题解决及游戏方案

汉诺塔问题的解决及游戏设计

班级:数学与应用数学0901

姓名:何文坤黄骏

指导老师:王玉英

随着时代的不断发展进步,计算机已经融入我们的日常生活。很多时候,很多的问题想通过人的手来亲自解决已变得十分困难了,这时我们就要运用计算机来帮我们解决这些复杂的问题。汉诺塔问题就是这类较复杂的问题。

汉诺塔游戏规则:有三根针A,B,C。A针上有n个盘子,盘子大小不等,大的在下,小的在上。要求把这n个盘子移到C针,在移动过程中可以借助B针,每次只允许移动一个盘子,且在移动过程中在三根针上的盘子都保持大盘在下,小盘在上。

此次,我们通过Visual

C++软件运用递归算法来解决汉诺塔问题。程序运行后会出现一个界面,界面上有各种操作提示,按照提示进行各种操作后会得到汉诺塔游戏的运行过程及结果。

关键词:汉诺塔;Visual C++;递归算法;

问题描述------------------------------------------------------------------------------1开发平台------------------------------------------------------------------------------2变量命名规则------------------------------------------------------------------------3程序中主要类或函数的描述------------------------------------------------------4程序流程-----------------------------------------------------------------------------------------6设计难点及难点处理---------------------------------------------------------------7运行结果及结果分析---------------------------------------------------------------8程序需要完善的地方---------------------------------------------------------------10自己的心得体会---------------------------------------------------------------------11

一、问题描述

汉诺塔<又称河内塔)问题是起源于印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石柱,第一根上面套了64个圆的金片,大的在下,小的在上。庙里的众僧不倦地把他们一个个的从这根柱搬到另一根柱上,规定可以利用中间的一根柱作为帮助,但每次只能般一个,而且大的不能放在小的上面。

这是一个著名的问题。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是18446744073709551615次。这是一个天文数字,若每一微秒可能计算一次移动,那么也需要几乎一百万年。我们仅能找出问题的解决方法并解决较小N值时的汉诺塔,但很难用计算机解决64层的汉诺塔。

后来,这个传说就演变成汉诺塔游戏:

1.有三根针A,B,C,A针上有n个圆盘。

2.每次移动一个圆盘,小的只能叠在大的上面。

3.把所有圆盘出从A针上全部移动到C针上,移动过程中可以利用中间的B

针作为帮助。

汉诺塔问题也是程序设计中的经典递归问题:

将n个盘从A针上全部移动到C针可以分解为下面3个步骤

(1)将A上n-1个盘移到B针上<借助C针)。

(2)把A针上剩下的一个盘子移到C针上。

(3)将n-1个盘子从B针移动到C针上<借助A针)。

二、开发平台

此次课程设计运用到的开发平台有Windows XP和Visual C++。通过C++语言编程来实现较小n值汉诺塔问题的解决。

三、变量命名规则

四、程序中主要类或函数的描述

五、程序流程

六、设计难点及难点处理

七、运行结果及结果分析

程序的运行结果如下:

第一步,输入盘的个数n<范围为1—>10)运行结果如图1所示:

图1

第2步,选择菜单中的1,电脑自动控制和选择菜单中的2,由人控制,运行结果如图2所示:

图2

第3步,输入盘的移动速度,运行结果如图3所示:

图3

第4步,输出运行结果。运行过程和结果如图4,5所示:

图4

图5

第5步,输入p,判断是否继续游戏运行,运行结果如图6所示:

图6

第6步,若继续游戏,运行结果如图7,再次循环:

图7

结果分析:

在做汉诺塔问题时,最大的问题就是如何来移动盘子,而且要满足各种限制条件。此次,我们将盘子抽象成一个数组中的具体元素,通过改变数组中元素的位置来实现盘子的移动。我们知道,改变数组中的元素位置是很容易实现的,这样就将负责的问题简单化了。

再者,为实现游戏的连续性,我们在程序中加入了一个循环语句来实现此功能。可单单加入循环还不能实现这功能,再继续进行下一次游戏是,需要将上次的游戏运行结果进行初始化,若不初始化,下次的运行结果将会是在上次运行结果的基础上再将程序运行一遍,就会出现错误。所以在为了得到此结果,需要注意很多容易疏忽的小细节。

八、程序需要完善的地方

九、自己的心得体会

一个多礼拜里,我们有过不少的疑惑和惊喜,也有过唇枪舌剑的争论和相互鼓励的安慰。我们经历了很多,同时也收获了很多。经过这次课程设计,我不仅学到了很多知识和技能,更重要的是锻炼了我们如何运用所学的知识去解决实际问题的能力。

C++语言课程设计和现代计算机技术相结合,是对我在本阶段学完理论知识课程后对自己该方面能力的一次很好检验。从开始的算法思路到程序运行调试后得到了运行结果界面以及令人兴奋的可行程序,都是一次很好的学习和锻炼过程。使我们巩固了所学的理论知识,培养了我灵活运用和知识组合及技能来分析和解决实际问题的能力。同时还提高了我对C++语言的兴趣。

总之,在这一次C++语言课程设计中我获得了如下收获:

1.对实验原理有了更深刻的理解

2.对该理论在实际应用中有了深刻的理解

3.激发了学习的积极性

十、参考文献

[1]申惠芳,基于VC++语言的四针汉诺塔游戏的设计与算法研究,山东,

科技信息,2018年32期;

[2]黄维通,VC++面向对象与可视化程序设计[M],北京:清华大学出版社;

[3]孙东宁,汉诺塔问题研究,吉林,考试周刊,2018年28期;

[4]郑莉,董渊,何江舟,C++程序语言设计[M]<第4版),北京:清华大学出版社,2018;

[5]常跃,汉诺(Hanoi>塔递归算法的教案研究,云南,云南电大学报,2005年1期。

附录<程序)

#include

#include

#include

#include

#include

#include

struct T

{

int h。//塔的高度

int x。

//塔的第一个盘的x坐标 ,y坐标等于(7+n-塔的高度h>

int l。//塔的第一个盘的长度}ta[3]={{10,15,2},{0,0,0},{0,0,0}}。

char c[18][79],hnt[18][79]={

{" "},

{" 汉诺塔动画演示 "},

{" "},

{" ╔════════════════════════════════════╗"},

{" ║║"},

{" ║║"},

{" ║║"},

{" ║▆║"},

{" ║▆▆║"},

{" ║▆▆▆║"},

{" ║▆▆▆▆║"},

{" ║▆▆▆▆▆║"},

{" ║▆▆▆▆▆▆║"},

{" ║▆▆▆▆▆▆▆║"},

{" ║▆▆▆▆▆▆▆▆║"},

{" ║▆▆▆▆▆▆▆▆▆║"},

{" ║▆▆▆▆▆▆▆▆▆▆║"},

{" ╚════════════════════════════════════╝"}}。

int n。

int sum=0。

int computerorpeople=1。

int speed=0。

void count_ta_1(int ta_1>//重新计算塔的第一个盘的x坐标和塔的高度{

int i。

int j。

int k=0。

for(i=7。i<7+n。i++>

for(j=4+ta_1*24。j<28+ta_1*24。j++>

{

if(hnt[i][j]!=' '>

{

for(。hnt[i][j+k]!=' '。k++>。

ta[ta_1].x=j。

ta[ta_1].l=k。

return。

}

}

}

void move(int ta_1,int ta_3>

{

int i。

sum++。

ta[ta_3].h++。

ta[ta_3].x=ta[ta_1].x+(ta_3-ta_1>*24。//每个塔之间相隔4

ta[ta_3].l=ta[ta_1].l。

for(i=0。i

{

hnt[7+n-ta[ta_3].h][ta[ta_3].x+i]=hnt[7+n-

ta[ta_1].h][ta[ta_1].x+i]。

hnt[7+n-ta[ta_1].h][ta[ta_1].x+i]=' '。

}

ta[ta_1].h--。

count_ta_1(ta_1>。

system("cls">。

for(i=0。i<7+n。i++>

cout<

cout<

cout<

从"<<<"塔移动一个盘到"<<<"塔"<

cout<

if(computerorpeople==2>

system("pause">。

else

for(i=0。i<200000*speed。i++>。

}

void hanoi(int ta_1,int ta_2,int ta_3,int m> //递归,ta_1/ta_2/ta_3分别为3座塔的代号,m为盘子数

{

if(m==1>

move(ta_1,ta_3>。

//如果盘子为1,将这个盘子从塔座A移动到塔座C

else

{

hanoi(ta_1,ta_3,ta_2,m-1>。//将塔座A的前m-

1个盘子移到塔座B

move(ta_1,ta_3>。

//将塔座A的第m个盘子移到塔座C

hanoi(ta_2,ta_1,ta_3,m-1>。//将塔座B的m-

1个盘子移到塔座C

}

}

void main(>

{

int i,b=1。

for(i=0。i<18。i++>

{

for(int j=0。j<=78。j++>

{

c[i][j]=hnt[i][j]。

}

}

while(b==1>

{

cout<<"请输入汉诺塔的高度<范围1->10):"。

cin>>n。

cout<<"请选择:输入1由电脑自动控制。"<

cout<<" 输入2由人控制。"<

cout<<"请输入:"。

cin>>computerorpeople。

if(computerorpeople!=1&&computerorpeople!=2>

computerorpeople=1。

if(computerorpeople==1>

{

cout<<"请输入移动盘的速度(例如:输入1000则代表1秒>:"。

cin>>speed。

}

if(n<1||n>10>

n=10。

ta[0].h=n。

system("cls">。//清除屏幕

for(i=0。i<7+n。i++>

cout<

cout<

system("pause">。//

system("pause">就是从程序里调用“pause”命令。而“pause”这个系统命令的功能

很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回。

hanoi(0,1,2,n>。

if(computerorpeople==1>

system("pause">。

system("cls">。

for(i=0。i<18。i++>

{

for(int j=0。j<=78。j++>

{

hnt[i][j]=c[i][j]。

}

}

cout<<"是否继续游戏?是请按1,不是请按2"<

cin>>b。

sum=0。

ta[0].h=10。

ta[0].l=2。

ta[0].x=15。

for(i=1。i<3。i++>

{

ta[i].h=0。

ta[i].l=0。

ta[i].x=0。

}

}

}

汉诺塔课程设计

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

、告诉伙伴们游戏规则: 以三个环为例说明: (一)先让伙伴们自己观察有几个柱子,有几个盘,并且盘是怎么排列的? 答:有三根相邻的柱子,第一根柱子上从下到上放着3个不同大小的圆盘,并且顺序是由大到小依次叠放。 (二)分别为这3个相邻的柱子编号A柱、B柱、C柱;在为这3个圆盘编号盘1、盘2、盘3。 让伙伴们自己动脑想想:如何要把A柱上的3个盘子一个一个移动到C柱上,并且每次移动同一根柱子上都必须保持大点的盘子在下,小点的盘子在上。最后也要使移动到C 柱的圆盘从下到上按照盘3,2,1金字塔的形状排列。 (三)带领伙伴们一起动手操作: (1)、盘1移动到C柱。 (2)、盘2移动到B柱。 (3)、盘1在移动到B柱上,这时盘1在盘2上。 (4)、盘3移动到C柱上。 (5)、再将盘1移动到A柱,这时B柱就只剩盘2。 (6)、将盘2移动到C柱,在盘3上边。 (7)、再将盘1移动到C柱,这时就成功了。 (四)鼓励伙伴们再来一次,按照刚才的移动方法 将C柱的圆盘移动到A柱。 (五)等所有伙伴都移动成功都移动成功后,引导伙伴们仔细思考,看看各位伙伴在移动的过程中有发现什么规律和技巧没有? 带领伙伴再来熟悉一遍: 第一步:盘1移动到C柱;第二步:盘2移动到B柱;......第四步:盘3移动到C柱上......

汉诺塔课程设计

学 号: 200840420149 课 程 设 计 题 目 汉诺塔 教 学 院 计算机学院 专 业 计算机 班 级 网络技术 姓 名 指导教师 2010 年 12 月 17 日

课程设计任务书 2009 ~2010 学年第一学期 学生姓名:专业班级:网络技术 指导教师:工作部门:计算机学院 一、课程设计题目 汉诺威塔 二、课程设计内容(含技术指标) 1.在移动盘子的每一步骤,形象直观地显示各针上的盘子。 2.考虑到学“VC 语言”课程的学生同时学习了“数据结构”课程,所以用灵活的数据结构解决汉诺威塔问题,灵活的处理数据结构中的经典问题。 3.使用VC++,因用面向对象的方法去处理数据结构已经是当今的潮流。 三、进度安排 1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2. 完成最低要求:实现5层汉诺威塔的调整过程; 3.进一步要求:直至实现n=9时的情况。 四、基本要求 1.界面友好,函数功能要划分好 2.总体设计应画流程图 3.程序要加必要的注释 4.要提供程序测试方案 5.程序一定要经得起测试,宁可功能少一些,也要能运行起来。 教研室主任签名: 2010年12 月 17 日

目录 1、概述 (3) 2、设计目的 (4) 3、问题分析 (4) 4、逻辑设计 (5) 5、流程图 (5) 6、程序代码: (6) 7、程序调试与测试 (9) 8、结果分析 (12) 9、总结 (13) 一、概述 数据结构是计算机学科非常重要的一门专业基础理论课程,要想编写针对非数值计算问题的高质量程序,就必须要熟练的掌握这门课程设计的知识。另外,他与计算机其他课程都有密切联系,具有独特的承上启下的重要位置。拥有《数据结构》这门课程的知识准备,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程的都是有益的。

用VB设计汉诺塔动画游戏

本栏目责任编辑:谢媛媛软件设计开发Computer Knowledge and Technology 电脑知识 与技术第5卷第30期(2009年10月)用VB 设计汉诺塔动画游戏 刘德强 (无锡职业技术学院,江苏无锡214024) 摘要:汉诺塔问题是程序设计教学中关于递归调用的经典案例。该文介绍了用VB 设计汉诺塔动画游戏程序的基本过程,其中重点介绍了用VB 的自定义数据类型和图形处理技术设计游戏步点状态记录和动画效果的方法。 关键词:VB ;汉诺塔;动画 中图分类号:TP311文献标识码:A 文章编号:1009-3044(2009)30-8460-03 The Designing of Hanoi Towers Animation Game by VB LIU De-qiang (Wuxi Institute of Technology,Wuxi 214024,China) Abstract:The Hanoi Towers is a typical case of recursive calls in programming teaching.This paper introduces the basic process of design -ing Hanoi Towers animation game by VB,focuses on recording game state between two steps and designing animation by self-defined data type and graph skill in VB. Key Words:VB;Hanoi;animation 汉诺塔问题源自印度的一个古老传说,传至现代演变成了汉诺塔游戏:有A 、B 、C 三个垂直杆和若干个大小各不相同的圆片。开始时圆片全部套在A 杆上,且从下至上圆片大小依次递减。要求借助B 杆,将圆片全部移到C 杆上,每次只能移动一片,并且整个过程中三个杆上的圆片都必须保持大的在下小的在上。游戏的难度由开始时放置在A 杆上圆片的个数进行控制。 1游戏步点状态记录设计 笔者设计的汉诺塔游戏程序主要包括演示和游戏两方面的功能。演示功能实现的是根据汉诺塔问题算法预先计算出的圆片移动顺序由计算机自行对圆片进行移动;而游戏功能是指计算机通过人机交互界面根据游戏者的实时操作顺序进行圆片的移动。图1是程序运行时界面。无论是演示还是游戏,计算机执行的基本动作元素是相同的,即圆片从一个杆上移动到另一个杆上,这一过程体现在程序设计中就是在新的位置对圆片图形进行重画,它与每个杆的步点状态密切相关。 步点状态是指每完成一步操作以后,开始下一步操作之前,一个杆上 的圆片数量及各圆片的位置和大小等多个特征综合构成的状态,是多个 数据的集合。将开始时圆片数记为n ,从初始状态圆片都在A 杆上,到终 止状态n 个圆片移到C 杆上,其间每次移动圆片,各杆的步点状态都会 发生变化。游戏进程中“记”住各杆的当前步点状态,是实现不断移动圆片 的关键。以要移动A 杆上的一个圆片到B 杆为例:要判断圆片根据规则 是否可以移动及圆片移动后放置在B 杆的什么位置(y 坐标),就必须知 道当前B 杆上最上端圆片的大小和B 杆上当前圆片数量,即B 杆的当前 步点状态。综合以上分析,游戏步点状态记录是程序设计中的要点。 鉴于描述步点状态需要多个数据,且数据间相互关联并构成整体,笔 者在设计中采用了自定义数据类型的方法,数据类型名称为circles ,所含 内容和定义格式如下: Type circles counts As integer r()As integer x As integer y()As integer End Type circles 类型中,数据成员counts 用于记录杆上实际圆片数,r 用于记录各圆片的半径,x 记录各圆片圆心的x 坐标,y 记录各圆片圆心的y 坐标。因为每次游戏设置的初始圆片数是不确定的且游戏进程中各杆都可能出现多个圆片,所以数据成员r 和y 定义为动态数组。 数据类型circles 定义以后,先使用该类型定义三个实例a 、b 、c ,分别代表A 、B 、C 三个杆的步点状态。语句如下: Dim a As circles ,b As circles ,c As circles 当初始圆片数量确定后(记为n),可使用下列语句对A 杆的步点状态a 进行初始化。 投稿日期:2009-08-22 作者简介:刘德强(1965-),江苏靖江人,无锡职业技术学院讲师。 图1运行界面ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.5,No.30,October 2009,pp.8460-8462E-mail:xsjl@https://www.docsj.com/doc/a217451137.html, https://www.docsj.com/doc/a217451137.html, Tel:+86-551-569096356909648460

校本课程《汉诺塔游戏》【教学设计】.doc

《汉诺塔游戏》教学设计 学习内容:数学游戏“汉诺塔”第一课时 学习目标: 1.了解汉诺塔游戏的传说以及汉诺塔游戏的基本规则。 2.经历汉诺塔游戏的游玩过程,在“玩”中掌握汉诺塔游戏的基本规则,初步发现游戏中的规律。 3.在收集信息、整理归纳、猜测验证的数学思维过程,发展归纳推理能力和逻辑思维能力。 4.在解决问题的过程中,体会与他人合作获得更多的成功体验。 学习重点: 经历汉诺塔游戏的游玩过程,在“玩”中掌握汉诺塔游戏的基本规则初步发现游戏中的规律。 学习难点: 在收集信息、整理归纳、猜测验证的数学思维过程,发展归纳推理能力和逻辑思维能力。

学习过程: 课前活动 大家喜欢玩游戏么?玩过什么游戏? 我为大家带来一位游戏高手,一起来认识一下。播放录像。这 只黑猩猩聪明吧?它的表现太神奇了!你知道它玩的什么? 板书课题:汉诺塔 接下来,就让我们一起步入汉诺塔游戏的世界。 一、认识汉诺塔 1.关于汉诺塔,你想了解些什么?(规则,来历,玩法……) 同学们的问题太棒了!相信上完了这节课,能解决你的许多问题! 咱们就从汉诺塔的来历说起。Ppt 播放相关介绍。 2.认识汉诺塔各部分。 到了现代,汉诺塔演变成了这个样子。出示教具。 咱们一起来认识一下汉诺塔:下面是一个托盘,上面竖着3 根柱子,从左到右依次为A 柱、B 柱、C 柱。A 柱是起始柱,游戏开始的时候所有的圆片摆放的位置;C 柱是目标柱,游戏结束时,所有的金片都按照顺

序排列在上面;B 柱是中转柱。 3.了解游戏规则。 大家想不想看一看,老师玩汉诺塔游戏的录像?请你一边看一边想:汉诺塔游戏的规则是什么?出示录像。 谁来说一说,汉诺塔游戏的规则是什么? (1)从一边到另一边板书:1.从A 到C (2)一次只能移动一个金片板书:2.一次一片 (3)大金片不能放到小金片的上面板书:3.大不压小 二、动手实践玩游戏 知道了规则,接下来,咱们就开始玩汉诺塔的游戏吧。 1.咱们从1 个圆片开始研究。 请你拿出学具,在A 柱上摆放1 个圆片。其它圆片放在旁边桌上。 1 个圆片,可以怎么玩?动手试一试。说一说。 生1:可以从A 直接到C,移动一次。生 2:可以从A 到B 再到C,移动两次。 两种方法都可以。我们来看规则:从A 到C,如果可以直接一步到

基于JAVA汉诺塔游戏设计与实现

基于JAVA汉诺塔游戏设计与实现 院系:计算机与电子系 专业班:计算机应用技术0902班 姓名:高亚 学号:20092911057 指导教师:彭文艺 2012 年6月

基于JAVA汉诺塔游戏设计与实现JA V A Tower of Hanoi-based Game Design and Implementation

摘要 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 随着时代的不断发展进步,计算机已经融入我们的日常生活。很多时候,很多的问题想通过人的手来亲自解决已变得十分困难了,这时我们就要运用计算机来帮我们解决这些复杂的问题,汉诺塔问题就是这类较复杂的问题。 此次,我们通过Eclipse软件来解决汉诺塔问题。程序运行后会出现一个界面,界面上有各种操作提示,按照提示进行各种操作后会得到汉诺塔游戏的运行过程及结果。 关键词:Java汉诺塔Eclipse

Abstract Java is a cross-platform application software can write object-oriented programming language by Sun Microsystems, Inc. in May 1995 launch of the Java programming language and the Java platform (namely JavaSE, JavaEE, of JavaME) the general term.Has excellent versatility, efficiency, platform portability, and security of Java technology, widely used in personal PC, the data center, game consoles, scientific supercomputers, mobile phones and the Internet, while the world's largest developer of professional community. Global cloud computing and mobile Internet industry environment, Java has significant advantages and broad prospects. With the continual development and progress, the computer has been integrated into our daily lives. In many cases, a lot of problems to think through the human hand to personally resolve the very difficult, then we will use the computer to help us solve these complex issues. The Tower of Hanoi problem is that these more complex problems. The Eclipse software to solve the Tower of Hanoi problem. After running a single interface, the interface on a variety of operating tips, follow the prompts to perform various operations will be the running process and the outcome of the Tower of Hanoi game. Key words: Java Tower of Hanoi Eclipse

汉诺塔问题实验报告

1.实验目的: 通过本实验,掌握复杂性问题的分析方法,了解汉诺塔游戏的时间复杂性和空间复杂性。 2.问题描述: 汉诺塔问题来自一个古老的传说:在世界刚被创建的时候有一座钻石宝塔(塔A),其上有64个金碟。所有碟子按从大到小的次序从塔底堆放至塔顶。紧挨着这座塔有另外两个钻石宝塔(塔B和塔C)。从世界创始之日起,婆罗门的牧师们就一直在试图把塔A 上的碟子移动到塔C上去,其间借助于塔B的帮助。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。当牧师们完成任务时,世界末日也就到了。 3.算法设计思想: 对于汉诺塔问题的求解,可以通过以下三个步骤实现: (1)将塔A上的n-1个碟子借助塔C先移到塔B上。 (2)把塔A上剩下的一个碟子移到塔C上。 (3)将n-1个碟子从塔B借助于塔A移到塔C上。 4.实验步骤: 1.用c++ 或c语言设计实现汉诺塔游戏; 2.让盘子数从2 开始到7进行实验,记录程序运行时间和递 归调用次数; 3.画出盘子数n和运行时间t 、递归调用次数m的关系图, 并进行分析。 5.代码设计: Hanio.cpp #include"stdafx.h" #include #include #include void hanoi(int n,char x,char y,char z) { if(n==1) { printf("从%c->搬到%c\n",x,z); } else { hanoi(n-1,x,z,y); printf("从%c->%c搬到\n",x,z); hanoi(n-1,y,x,z); }

汉诺塔课程设计报告

汉诺塔游戏 学院:理学院 班级:信科102班 组长:李万东 组员1:袁雪娇 组员2:张瑜 设计期限2012 年3月1开始 至2012年6月20 结束 课程设计题目:汉诺塔游戏 课程设计目的: 《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JA V A程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 随着社会的进步,我们用来娱乐的游戏世界也越来越丰富,越来越复杂。本程序的汉诺塔游戏不但包括了游戏最基本的功能,而且还能培养用户的逻辑思维能力,同时也给玩家提供了一定的娱乐空间。本游戏还包括一个自动演示搬移汉诺塔的功能,此功能能够帮助初次接触此游戏的用户了解此游戏的玩法。 课程设计理论: 本程序要求实现用图形界面,画出3个杆和若干个大小不一的矩形盘子,形成3个塔,分别为A塔,B塔,C塔,同时盘子数目可以人工设定。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。用户在移动盘子的过程中,可以随时单击汉诺塔菜单栏的菜单中提供的按钮,重新开 1格式已调整,word版本可编辑.

始游戏,并且可以通过单击汉诺塔菜单栏的菜单提供的按钮,让程序自动完成把A塔上的盘子全部移动到C塔上,实现自动演示。 汉诺塔算法属于递归算法,该算法过程为: 假定要把n个盘子按题目规定由A杆借助B杆移动到C杆。 第一步:先把上面的n-1个盘子借助C杆放到B杆。 第二步:把第n个盘子从A杆直接移到C杆。 第三步:把B杆上的n-1个盘子借助A杆移到B杆。 概要设计: 1.课程设计内容: 有三个表示塔的对象,分别命名为A、B和C。A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。用户可以用鼠标拖动盘子,把A塔上的盘子全部移动到另外两个塔中的任何一个塔上。要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。用户也可以选择让程序自动演示。选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程。 2.课程设计功能: (1)设计GUI界面的汉诺塔。汉诺塔中有三个座,名字分别是A、B和C。初始状态是A座上有四个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动该盘子、释放鼠标来放置该盘子。 (2)程序要求用户在移动盘子过程中,不允许把大盘子放在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。 (3)用户可以通过单击汉诺塔菜单栏的菜单提供的按钮,让程序自动完成把A座上的盘子全部移动到B座或C座上。 (4)用户在移动盘子的过程中,可以随时单击汉诺塔菜单栏的菜单提供的按钮,重新开始游戏。 3. 2.

汉诺塔游戏设计过程

兰州交通大学 数理与软件工程学院 课程设计报告 2011 ~2012学年第二学期 课程名称数据结构 设计题目汉诺塔游戏程序 班级信计1001班 小组成员张章、王欣、李贵生 报告者李贵生201005235 指导老师金静 2012年6月

一、实验目的: 通过此次C++实训,一方面加深了对C++语言的了解,而不只是单单的在课本中学到的那些理论。通过学生动手亲自编写,平时乏味的课程,变的生动有趣。平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。另一方面,通过学生小组完成任务,提高团队意识,增加凝聚力,让同学们意识到团结就是力量,每个人都是重要的一份子。 二、题目:汉诺塔游戏程序 <1> 问题描述:在平面上有三个位置A、B、C,在A位置上有n 个大小不等的圆盘、小盘压在大盘上形成圆盘堆。要求将A位置的N个圆盘通过B位置移动到C位置上,并按同样的顺序叠放。 移动圆盘时必须遵循以下规则: 1.每一次只能移动一个圆盘 2.圆盘可以放在A、B、C任何一个塔座上 3.任何时刻都不能将大圆盘压在小圆盘上 <2> 基本要求: 圆盘的个数从键盘输入(如3-64等);用动画的形式在屏幕上显示盘的移动。 三、问题分析和任务定义 1、已知有三个塔(1、 2、3)和n个从大到小的金碟子,初始状态时n个碟子按从大到小的次序从塔1的底部堆放至顶部。 2、要求把碟子都移动到塔2(按从大到小的次序从塔2的底部堆

放至顶部)。 3、每次移动一个碟子。 4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。 5、可以借助塔3。 先考虑a杆下面的盘子而非杆上最上面的盘子,于是任务变成了: 1、将上面的N个盘子移到b杆上; 2、将a杆上剩下的盘子移到c杆上; 3、将b杆上的全部盘子移到c杆上。 将这个过程继续下去,就是要先完成移动n个盘子、n-1个盘子、n-2个盘子....1个盘的工作。 四、课题介绍: 4.1 汉诺塔问题初始模型: 4.2 实现步骤: 为满足题目中盘子的移动问题,必须遵循的条件是:一次

奇妙的汉诺塔教学设计

神奇的汉诺塔教学设计 【教学目标】 1.在操作探究的过程中,使学生能够初步体会从简单问题入手寻找规律从而解决实际问题的方法,学会有条理地思考。 2.经历收集有用的信息、进行归纳、类比与猜测、再验证猜测,这一系列数学思维过程,发展学生的归纳推理能力。 3.通过自主探究、合作交流、汇报展示,引导学生有条理地阐述自己想法,培养合作意识,获得成功的体验。 【教学过程】 热身练习: ① 1 3 5 7 ()() ② 2 4 6 8 ()() ③ 2 4 8 16 ()() ④ 1 3 7 15 ()() 一、故事引入,揭示课题 师:能说出其中的规律吗? 小结:观察思考是学好数学的诀窍,他可以锻炼我们思维,当然,我们还可以通过游戏来锻炼我们的思维。 师:你们喜欢玩游戏吗?最近呀老师又迷上了一个数学游戏——汉诺塔。(板书课题)大家仔细观察这个汉诺塔,你看到了什么? 生:(预设)有大小不一的圆环,还有3根柱子。 师:这3根柱子我们帮它取个名字,一根叫起始柱,一根叫过渡柱,一根叫目标柱。

关于汉诺塔还有一个古老的传说呢,一起听一听。 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 师:大胆的猜一猜,他要移动多少次才能全部移完? 生:(预设)64次。 二、游戏操作,探索规律。 (1)师:那这个神奇的汉诺塔游戏怎么玩呢?大家有没有从这个故事中看出游戏规则呢? 生:①小圆盘上不能放大圆盘。②一次只能移动一个圆盘。③可以借助过渡柱。 师:同学们掌握了游戏规则,那我们先来比比赛,看哪个小组以最少的次数移完4个圆环,比赛时间2分钟,开始。 学生动手操作。 (2)学生汇报。 师:你来演示一下是怎样移的? 师:那有没有比这次数更少的,这个游戏是不是有什么规律呢?今天我们就来一起研究一下吧。 师:我们先从最简单的入手,先从1个圆环开始,依次叠加,把你们的操作过程记录在这张表上,孩子们,动起来吧! 学生动手操作并填表做记录。 (3)点名同学上台边操作边汇报。

汉诺塔教材

有趣的汉诺塔 ——思维潜能开发校本教材 河山实验学校小学部时美娟 前言 数学教学游戏(思维潜能开发)课程是按照《优质课堂与现代教学技艺运用的研究》总课题组倡导的“教学游戏”理念,借鉴国内外“思维潜能开发”的有效经验,结合心理学、认知科学和脑科学的最新研究成果,经过本土化再造后, 逐步形成的教学游戏课程的训练体系。其核心是以“益智”为载体,通过愉悦的探究体验活动,开发学生的思维潜能,促进学生身心健康的全面发展。 教学游戏(思维潜能开发)课程实质上是一种思维潜能开发训练。它采用课程化的训练体系,试图跳出目前“题型”和“分数”的羁绊,在充满游戏乐趣和紧张思维碰撞的精神活动中挑战固有的思维定势,开发学生的智慧潜能。它不仅是一种在探索中进行创新思维的学习,还是落实《义务教育阶段数学课程标准2011年版》对“四基、四能”教学要求的一种有效手段。其目的在于让学生在实践、体验中培养其创新意识、践行能力,团结协作、社会活动等方面的能力及技艺。 河内塔是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。问:如何移?最少要移动多少次? 目录 1 基本介绍 2 历史传说 3 相似问题 4 concreteHAM 4.1 在分析⑵之前 4.2 讨论问题⑵, 4.3 算法介绍 5 汉诺塔问题的程序实现 5.1 汉诺塔问题的递归实现 5.2 汉诺塔问题的非递归实现 5.3 汉诺塔问题的递归Java语言实现 5.4 汉诺塔问题的递归pascal语言实现

汉诺塔探趣

“汉诺塔”问题探趣 洞头县实验小学 502班叶钫舟 指导老师洞头县实验小学陈素萍 一、问题的提出: 一位法国数学家曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。 尽管这个传说并不可信,但现在却成就了一种益智玩具━━“汉诺塔”(如图)的诞生。对下面这个8层汉诺塔,如何按以上要求将所有的圆盘从最左边的柱子上移到最右边的柱子上来呢?并如何保证移动的步子最少呢? 对这个富有挑战性的游戏,我非常有兴趣,于是我开始了研究! 二、研究过程: 1、简化器材,方便携带,随时演练,不断研究 “汉诺塔”游戏器材,体积较大,质量也大,不方便随身携带,因而也不能让我随时随地进行演练。 考虑到它最关键的是体现由小到大的一种排列,我用扑克牌同色的1(A),2,3,4,5,6,7,8来代替这个“汉诺塔”,平时演练,只要假想桌子上有左0、中1、右2三个档位即可,将这8张扑克牌从上到下按由小到大的顺序叠放在一起,放置在左边档位0处,然后将按游戏规则将它们依次全部移到最右边档位2处即可。 我把这种用扑克牌玩“汉诺塔”游戏称为“汉诺牌”,这样就很方便了!有时忘记了带扑克牌,我就用笔在纸上写下1~8这张8张“牌”,就可以玩了!

汉诺塔教学反思教学文案

师生问答对话的探索----《汉诺塔》教学反思 山东省日照市文登路小学刘卫妮 汉诺塔游戏,起源于古印度的一个传说,这一堂从游戏中开始的数学课,将一改有些学生认为“数学很枯燥的”的想法,通过让学生自己动手去体验,不仅是在学习数学知识,更是在训练数学思维。揭开的不仅是谜底,更是想教给学生如何学好数学的一种方法。下面,我将对师生问答对话进行一下反思。 过程课中,第一,开始通过师生会话自然导入,如:你喜欢玩游戏吗?你还想继续玩吗?通过传说中关于世界末日的预言,让学生迫不及待的想找到问题的答案。第二,通过让学生到黑板上贴标题的方法,一方面自然出现课题,另一方面通过这种活动又复习了游戏规则,让学生通过活动说出游戏规则。如,师:孩子们,眼睛看到这儿来,你发现了什么?生:老师,汉诺塔这款游戏器具既有立柱,还有圆盘,我发现黑板上只有三根立柱,而缺少圆盘。师:孩子,你有一双善于发现的眼睛。圆盘在老师手里。谁来将这三个纸质圆盘贴到黑板上的第一根圆柱上?生贴师:大家同意他的贴法吗?理由是什么?师:同学们同意他的观点吗?生:。。。师:是的,小盘在上,大盘在下,这是我们玩这款游戏的规则之一(PPT出示),汉诺塔仅仅这一个规则吗?生:老师,我知道。玩汉诺塔还有一个规则是:一次只能移动一个圆盘。师:说的很好。请同学们仔细观察,看老师的操作是否正确,并说出理由。(师故意做错误演示)生:。。。。第三,注重在各个环节中渗透对学生的情感目标。比如“师:孩子们知道了游戏规则,我想征求大家的意见,此时,你最想干什么?”通过询问,拉近和学生的距离,建立一种平等民主的教学环境。又如“师:XX同学,不仅善于分析,还讲述的非常清楚,跟大家分享了他的成功。孩子们,分享别人的成功,也是一种进步。”让学生知道要取长补短,互

(完整版)汉诺塔教学反思

汉诺塔-教学反思 第三小学翟燕燕汉诺塔游戏,起源于古印度的一个传说,这一堂从游戏中开始的数学课,将一改有些学生认为“数学很枯燥的”的想法,通过让学生自己动手去体验,不仅是在学习数学知识,更是在训练数学思维。揭开的不仅是谜底,更是想教给学生如何学好数学的一种方法。过程课中,第一,开始通过师生会话自然导入,如:你喜欢玩游戏吗?你还想继续玩吗?通过传说中关于世界末日的预言,让学生迫不及待的想找到问题的答案。第二,通过让学生到黑板上贴标题的方法,一方面自然出现课题,另一方面通过这种活动又复习了游戏规则,让学生通过活动说出游戏规则。如,师:孩子们,眼睛看到这儿来,你发现了什么?生:老师,汉诺塔这款游戏器具既有立柱,还有圆盘,我发现黑板上只有三根立柱,而缺少圆盘。师:孩子,你有一双善于发现的眼睛。圆盘在老师手里。谁来将这三个纸质圆盘贴到黑板上的第一根圆柱上?生贴师:大家同意他的贴法吗?理由是什么?师:同学们同意他的观点吗?生:。。。师:是的,小盘在上,大盘在下,这是我们玩这款游戏的规则之一(PPT出示),汉诺塔仅仅这一个规则吗?生:老师,我知道。玩汉诺塔还有一个规则是:一次只能移动一个圆盘。师:说的很好。请同学们仔细观察,看老师的操作是否正确,并说出理由。(师故意做错误演示)生:。。。。第三,注重在各个环节

中渗透对学生的情感目标。比如“师:孩子们知道了游戏规则,我想征求大家的意见,此时,你最想干什么?”通过询问,拉近和学生的距离,建立一种平等民主的教学环境。又如“师:XX同学,不仅善于分析,还讲述的非常清楚,跟大家分享了他的成功。孩子们,分享别人的成功,也是一种进步。”让学生知道要取长补短,互相学习。第四,通过让学生找最少步数之间的规律进行拓展延伸,找到里面的数学奥秘,让学生觉得数学是很有趣的,数学无处不在,我们可以用数学问题解释生活中的很多事情。如,师:要是我们一直这样做下去,还没有做到咱们所有的9个圆盘的游戏,就已经下课了,来,我们先一起看一下我们的研究成果,认真看,你发现这些数字有什么规律了吗?最后,作为奖励我给学生讲了一个小故事,这个故事正好体现了本节课的数学问题,让学生在课下研究探索,找到问题的答案,寓教于乐。师:同学们,今天的这堂课老师分享了你们的成功和快乐,老师有一个故事也想和大家分享一下,“百万富翁的破产”:杰米是百万富翁,一天,他碰到上一件奇怪的事。一个叫韦伯的人对他说,我想和你订个合同,我将在整整一个月中每天给你10万元,而你第一天只需给我1分钱,以后你每天给我的钱是前一天的两倍。杰米说,真的?!你说话算数?合同开始生效了,杰米欣喜若狂。第一天杰米支出1分钱,收入10万元。第二天,杰米支出2分钱,收入10万元。到了第10天,杰米共得100万元,而总共才付出5元1角2分。到了第20天,杰米共得200万元,而韦伯才得千千元多。杰米想:要是合同订、三个月该多好!结果杰米却破产了。汉诺塔问题在数学界有很高的研究价值,而且至今还在被一些数学家们所研究,它可以帮助开发智力,激发

汉诺塔游戏攻略

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 3层: 第1步: x -移到-> y 第2步: x -移到-> z 第3步: y -移到-> z 第4步: x -移到-> y 第5步: z -移到-> x 第6步: z -移到-> y 第7步: x -移到-> y 4层: 第1步: x -移到-> z 第2步: x -移到-> y 第3步: z -移到-> y 第4步: x -移到-> z 第5步: y -移到-> x 第6步: y -移到-> z 第7步: x -移到-> z 第8步: x -移到-> y 第9步: z -移到-> y 第10步: z -移到-> x 第11步: y -移到-> x 第12步: z -移到-> y 第13步: x -移到-> z 第14步: x -移到-> y 第15步: z -移到-> y 5层:

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 第1步: x -移到-> y 第2步: x -移到-> z 第3步: y -移到-> z 第4步: x -移到-> y 第5步: z -移到-> x 第6步: z -移到-> y 第7步: x -移到-> y 第8步: x -移到-> z 第9步: y -移到-> z 第10步: y -移到-> x 第11步: z -移到-> x 第12步: y -移到-> z 第13步: x -移到-> y 第14步: x -移到-> z 第15步: y -移到-> z 第16步: x -移到-> y 第17步: z -移到-> x 第18步: z -移到-> y 第19步: x -移到-> y 第20步: z -移到-> x 第21步: y -移到-> z 第22步: y -移到-> x 第23步: z -移到-> x 第24步: z -移到-> y 第25步: x -移到-> y

汉诺塔C递归算法详细解答

汉诺塔C递归算法详细解答 程序如下: void move(char x,char y){ printf("%c-->%c\n",x,y); } void hanoi(intn,charone,chartwo,char three){ /*将n个盘从one座借助two座,移到three座*/ if(n==1) move(one,three); else{ hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } main(){ int n; printf("input the number of diskes:"); scanf("%d",&n); printf("The step to moving %3d diskes:\n",n); hanoi(n,'A','B','C'); } Hanoi塔问题, 算法分析如下,设A上有n个盘子。 如果n=1,则将圆盘从A直接移动到C。 如果n=2,则: (1)将A上的n-1(等于1)个圆盘移到B上; (2)再将A上的一个圆盘移到C上; (3)最后将B上的n-1(等于1)个圆盘移到C上。 如果n=3,则: A)将A上的n-1(等于2,令其为n`)个圆盘移到B(借助于C),步骤如下:(1)将A上的n`-1(等于1)个圆盘移到C上。 (2)将A上的一个圆盘移到B。 (3)将C上的n`-1(等于1)个圆盘移到B。 B)将A上的一个圆盘移到C。 C)将B上的n-1(等于2,令其为n`)个圆盘移到C(借助A),步骤如下:(1)将B上的n`-1(等于1)个圆盘移到A。 (2)将B上的一个盘子移到C。 (3)将A上的n`-1(等于1)个圆盘移到C。到此,完成了三个圆盘的移动过程。

《汉诺塔游戏设计与制作》课程设计报告

《动漫与网络游戏设计》课程设计报告 题目:汉诺塔游戏 院系:信息科学系 专业:软件工程 年级: 14级 成员1:学号 14053078 姓名:曾繁荣成员2:学号 14053080 姓名:陈俊杰日期: 2017年1月2号 成绩:

题目 一、作品介绍 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 二、设计思路 1、已知有三个塔(1、 2、3)和n个从大到小的金碟子,初始状态时n个碟子按从大到小的次序从塔1的底部堆放至顶部。 2、要求把碟子都移动到塔2(按从大到小的次序从塔2的底部堆放至顶部)。 3、每次移动一个碟子。 4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。 5、可以借助塔3。 先考虑a杆下面的盘子而非杆上最上面的盘子,于是任务变成了: 1)、将上面的N个盘子移到b杆上; 2)、将a杆上剩下的盘子移到c杆上; 3)、将b杆上的全部盘子移到c杆上。 将这个过程继续下去,就是要先完成移动n个盘子、n-1个盘子、n-2个盘子....1个盘的工作。

三、作品结构

四、设计步骤 为满足题目中盘子的移动问题,必须遵循的条件是:一次仅能移动一个盘,且不允许大盘放在小盘的上面。 设要解决的汉诺塔共有N个圆盘,对A杆上的全部N个圆盘从小到大顺序编号,最小的圆盘为1号,次之为2号,依次类推,则最下面的圆盘的编号为N。 第一步:先将问题简化。假设A杆上只有一个圆盘,即汉诺塔只有一层N,则只要将1号盘从A杆上移到B杆上即可。 第二步:对于一个有N(N>1)个圆盘的汉诺塔,将N个圆盘分成两部分:“上面的N-1个圆盘”看成一个整体,为了解决N个圆盘的汉诺塔。 五、实现步骤 (1)将A杆上面的N-1个盘子,借助B杆,移到C杆上。 图4—1 (2)将A杆上剩余的N号盘子移到B杆上。

3汉诺塔教学设计——刘卫妮

《汉诺塔》游戏教学设计(第三次) 山东省日照市文登路小学刘卫妮 一.设计意图 汉诺塔问题在数学界有很高的研究价值,而且至今还在被一些数学家们所研究,也是我们所喜欢玩的一种益智游戏,它可以帮助开发智力,激发我们的思维。让小学生接触这款益智游戏,利用一次次不断的探索和尝试,可以激发他们的兴趣,积极应对困难,获得成功体验,锻炼他们的思维,同时,培养主动探索,不服输的精神。 二.学情背景 1.活动人数:46人 2.器具准备:汉诺塔学具 — 3.教学问题:把组成“金塔”的圆片按照下大上小依次放在中央的柱子上; 每次只能移动一个圆;在移动过程中,大圆不能压在小圆上面; 每次移动的圆只能放在左中右的位子;将整座“金塔”移到另 外任意一根柱子上即告胜利。 三.思维训练目标 1.让学生在学习过程中,根据解决问题的需要,经过自己的探索,体验化繁为简找规律这一解决数学问题的基本策略。 2.经历收集有用的信息、进行归纳、类比与猜测、再验证猜测,这一系列数学思维过程,发展学生的归纳推理能力。 3.能用有条理的、清晰的语言阐述自己的想法。 4.在解决问题的活动中,学习与他人合作,懂得谦让,能相互帮助。 | 5.在老师的鼓励与引导下,能积极地应对活动中遇到的困难,在学习活动中获得成功体验。 四.游戏准备 学生:笔记本,笔,器具。 传统媒体:黑板 现代媒体:电脑、投影仪

五.教学过程 (1)介绍玩法,自主探索。 — ( 2)引导探究,尝试游戏 (ppt出示需要思考的内容) 刚才的思考就是咱们的操作过程给分成若干个有序的任务来完成。PPT出示: , 从最大的圆盘入手分析,它要移到第三处,推出,第二大圆盘要移到第二处,进而再推出最小的圆盘要移到第三处。环环相扣,思维严密。在数学上,咱们把这种方法叫做递推。(板书) (一)原题图:(二)移动第一次: (三)移动第二次:(四)移动第三次: 1. 想要成功,移动哪个圆盘最重要为什么 2. 如果最重要的圆盘移动成功,下一次最重要的是移动 哪一个圆盘 3. 第三次呢 任务一:将最大的圆盘移到第三处。 任务二:将第二大的圆盘移到第三处。 任务三:将第三大的圆盘移到第三处。

北师大版小学数学《数学游戏汉诺塔教案》精品教案设计

数学游戏班第1课时活动设计 【课题】汉诺塔 【教学时间】月日 【教学目标】1、认识汉诺塔 2、了解汉诺塔历史 3、理解汉诺塔的规则 4、进行一层、二层、三层的移动 【教学内容】认识汉诺塔 【课前准备】 教师:名单、课件 学生:汉诺塔 【活动过程设计】 一、汉诺塔知识 1、了解汉诺塔的由来 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。 2、认识汉诺塔 3、汉诺塔游戏规则 (1)每次只能移动一片; (2)小盘在上,大盘在下; (3)从A柱到C柱,步数要最少。 二、汉诺塔游戏 1、尝试一层、二层、三层的移动

2、发现规律、引出技巧 第一步最少步数 一层 C 1 二层 B 1+1+1=3 三层 C 3+1+3=7 3、练习 三层:A→C C→B B→A A→B B→C C→A 数学游戏班第2课时活动设计 (设计者:舒彩霞) 【课题】汉诺塔 【教学时间】月日 【教学目标】1、能进行汉诺塔的四层、五层的移动。 2、能推算出第一步要移到哪根柱上。 3、能推算出需要的最少的步数。 【教学内容】汉诺塔四层、五层的移动 【课前准备】 教师:汉诺塔、记录单 学生:汉诺塔 【活动过程设计】 一、熟练进行三层的移动 二、四层汉诺塔 1、尝试移动四层汉诺塔 2、发现规律、引出技巧 第一步最少步数

一层 C 1 二层 B 1+1+1=3 三层 C 3+1+3=7 四层 B 7+1+7=15 3、四层练习 四层:A→C C→B B→A A→B B→C C→A 三、五层汉诺塔 1、尝试移动五层汉诺塔 2、发现规律、引出技巧 第一步最少步数 一层 C 1 二层 B 1+1+1=3 三层 C 3+1+3=7 四层 B 7+1+7=15 五层 C 15+1+15=31 3、五层练习 五层:A→C C→B B→A A→B B→C C→A 数学游戏班第3课时活动设计 (设计者:舒彩霞) 【课题】汉诺塔 【教学时间】月日 【教学目标】1、能进行汉诺塔的六层的移动。 2、能推算出第一步要移到哪根柱上。 3、能推算出需要的最少的步数。

相关文档