汉诺塔探秘教学设计 胡小佳

时间:2019-05-13 00:08:38下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《汉诺塔探秘教学设计 胡小佳》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《汉诺塔探秘教学设计 胡小佳》。

第一篇:汉诺塔探秘教学设计 胡小佳

数学游戏汉诺塔 教学设计

彭州市通济镇蓝天小学

胡小佳

教学内容: 教学目标: 四年级下期p37,数学游戏 汉诺塔(1课时、40分钟)

1、让学生在学习过程中,根据解决问题的需要,经过自己的探索,体验化繁为简找规律这一解决数学问题的基本策略。

2、经历收集有用的信息、进行归纳、类比与猜测、再验证猜测,这一系列数学思维过程,发展学生的归纳推理能力。

3、能用有条理的、清晰的语言阐述自己的想法。

4、在解决问题的活动中,学习与他人合作,懂得谦让,能相互帮助。

5、在老师的鼓励与引导下,能积极地应对活动中遇到的困难,在学习活动中获得成功体验。

教学重点: 教学难点: 指导学生根据解决问题的需要,收集有用的信息,进行归纳、类比与猜测,发展初步的合情推理能力。

在解决问题过程中,引导学生进行有条理的思考,训练学生对自己的结论做出条理清晰的说明。

教学具准备: 教学过程:

一、游戏引入。DELL互联课堂设备、PPT课件、汉诺塔游戏软件、游戏记录表。

同学们你们都喜欢玩游戏,老师这儿就有个游戏你们想试试吗?

(ppt在白板上展示)

它呀,叫汉诺塔。

这个游戏就是想办法把第一根柱子上的圆盘都移到第三根柱子上。也按照上小下大的顺序排列好。

老师给大家准备了一个游戏的模拟软件。在软件上操作。

(ppt在白板上展示)可不白玩,给大家3分钟的时间,边玩边琢磨琢磨这个游戏的规则。同桌的同学可以边玩边讨论。注意相互礼让。

你会操作这个游戏了吗?谁能说说游戏的规则?

这个游戏看起来挺简单的,其实它不简单,世界上有好多数学家都研究过它呢。

二、介绍传说

关于汉诺塔还有一全古老的传说。

(ppt在白板上展示)

传说中的汉诺塔上只有64个盘子,按照上面的规则移动完成后,我们的世界怎么可能都不复存在了呢?

这中间究竟蕴含了什么样的奥秘呢?

今天我们也来研究一下汉诺塔,揭开这个古老传说中的奥秘。好吗?

说到研究这个传说,我发现这个汉诺塔上有64个圆盘,要是直接操作太多点了,干脆我们从50个圆盘开始研究吧?为什么不呢? 那从20个开始? 那你们说怎么办? 从最简单的开始!

不错!对于复杂的问题,我们可以从它最简单的形式开始研究,在研究的过程中找到规律就好办了。

三、演示游戏操作

盘子的个数可以在游戏界面的右边,个数框内更改。在游戏界面的右上方,还有对你操作步数的统计。

好,我们就把盘子的个数改成1个,从最简单的开始。(师板演)

刚才老师完成了1个盘子的汉诺塔的操作,现在我们来为做记录。你们自己在研究操作时也要做好数据记录哦。

(在白板上记录)

我们要完成操作,所用步数最少的,完成得最快的,才是最棒的。

四、活动要求说明

好,听清老师的要求。(边说边在白板上显示)

同桌两个同学轮流操作,一人操作时另一人在记录表上为他记录。每完成一次操作后两人交换。

从两个盘子开始操作,尽量用最少的步数完成你的操作。

同桌的同学在操作相同个数的盘子时比一比,看谁用的步数更少。记住,每完成一次操作,都要做好记录哦。明白了吗?开始行动!

五、学生在学生机上操作

师巡视,强调活动要求。指导记录数据。(用时5~10分钟)

六、收集数据 时间到请坐直

2个盘子的操作谁来演示?生板演 有比他步数少的操作方法吗?

两个盘子最少用了3步,第一步移动到哪? 师板演(在白板上记录)个盘子呢,你用了几步? 请你上来给大家演示?生板演 有比7步更少的吗?

你怎么保证能只用7步完成?(在白板上记录)

4个盘子呢?最少用几步完成? 生板演

看清楚了吗?

(在白板上记录)

七、观察分析,找规律。

(白板上展示)

到现在为止,我们已经研究了这四种情况的汉诺塔游戏。

要是我们一直这样做下去,还没有做到10个盘子的游戏就已经下课了,观察这个表格,开动你的脑筋,能不能发现一些规律。(生讨论,交流)提示:操作时用的最少步数之间有没有一定的规律呢?

(生演算,讨论,交流,发言)

八、运用发现的规律推测,并验证。

根据你们发现的规律,假如盘子是5个时,要想用最少的步数完成操作,下面我们就在游戏中来验证一下我们的推测。

验证的结果符合我们发现的规律。

如果盘子换成6 个,最少用几步?

我们再来验证一下。

验证的结果也符合我们发观的规律。

(师运用游戏软件的演示功能在白板上演示)

你能运用这个规律推算出10个盘子的汉诺塔游戏,最少要用多少步完成吗?

九、课堂小结

当盘子的个数不断地增加时,所用的最少步数也在不断地增多。

同学们你们还记得开始那个关于汉诺塔的传说吗?

传说中的柱子上有64个圆盘,按照我们刚才找到的规律,利用计算机进行运算,得到最少须要移动

***709551615

这么

多次才能完成操作。(ppt在白板上展示)

假设搬一个圆盘要用一秒钟,1小时有3600秒,我们把这个时间换算成小时,就有这么多小时,1天有24小时,再除以24,换算成这么多天,1年我们以365天来计算,再除以365,换算成年,大约是五千多亿年。

据现在的科学研究,地球从诞生到现在,也才只有大约46亿年的时间。而要完成64个圆盘的汉诺塔操作却要5千多亿年,当这个操作完成时,可能我们人类的世界真的都不复存在了。

十、结束语

同学们今天老师和大家一起探索了汉诺塔的奥秘。一个小小的游戏里边竟然包含着巨大的数学智慧。其实数学无处不在,只要我们打开自己敏锐的数学直觉、认真观察,学会收集整理信息并加以归纳,我们就能在自己周围的事物中发现更多的数学奥秘。

附:学生活动记录表

第二篇:汉诺塔教学反思

师生问答对话的探索----《汉诺塔》教学反思

山东省日照市文登路小学 刘卫妮

汉诺塔游戏,起源于古印度的一个传说,这一堂从游戏中开始的数学课,将一改有些学生认为“数学很枯燥的”的想法,通过让学生自己动手去体验,不仅是在学习数学知识,更是在训练数学思维。揭开的不仅是谜底,更是想教给学生如何学好数学的一种方法。下面,我将对师生问答对话进行一下反思。

过程课中,第一,开始通过师生会话自然导入,如:你喜欢玩游戏吗?你还想继续玩吗?通过传说中关于世界末日的预言,让学生迫不及待的想找到问题的答案。第二,通过让学生到黑板上贴标题的方法,一方面自然出现课题,另一方面通过这种活动又复习了游戏规则,让学生通过活动说出游戏规则。如,师:孩子们,眼睛看到这儿来,你发现了什么? 生:老师,汉诺塔这款游戏器具既有立柱,还有圆盘,我发现黑板上只有三根立柱,而缺少圆盘。师:孩子,你有一双善于发现的眼睛。圆盘在老师手里。谁来将这三个纸质圆盘贴到黑板上的第一根圆柱上?生贴师:大家同意他的贴法吗?理由是什么?师:同学们同意他的观点吗?生:。。师:是的,小盘在上,大盘在下,这是我们玩这款游戏的规则之一(PPT出示),汉诺塔仅仅这一个规则吗?生:老师,我知道。玩汉诺塔还有一个规则是:一次只能移动一个圆盘。师:说的很好。请同学们仔细观察,看老师的操作是否正确,并说出理由。(师故意做错误演示)生:。。第三,注重在各个环节中渗透对学生的情感目标。比如“师:孩子们知道了游戏规则,我想征求大家的意见,此时,你最想干什么?”通过询问,拉近和学生的距离,建立一种平等民主的教学环境。又如“师:XX同学,不仅善于分析,还讲述的非常清楚,跟大家分享了他的成功。孩子们,分享别人的成功,也是一种进步。”让学生知道要取长补短,互相学习。第四,通过让学生找最少步数之间的规律进行拓展延伸,找到里面的数学奥秘,让学生觉得数学是很有趣的,数学无处不在,我们可以用数学问题解释生活中的很多事情。如,师:要是我们一直这样做下去,还没有做到咱们所有的9个圆盘的游戏,就已经下课了,来,我们先一起看一下我们的研究成果,认真看,你发现这些数字有什么规律了吗?最后,作为奖励我给学生讲了一个小故事,这个故事正好体现了本节课的数学问题,让学

生在课下研究探索,找到问题的答案,寓教于乐。师:同学们,今天的这堂课老师分享了你们的成功和快乐,老师有一个故事也想和大家分享一下,“百万富翁的破产”:杰米是百万富翁,一天,他碰到上一件奇怪的事。一个叫韦伯的人对他说,我想和你订个合同,我将在整整一个月中每天给你10万元,而你第一天只需给我1分钱,以后你每天给我的钱是前一天的两倍。杰米说,真的?!你说话算数? 合同开始生效了,杰米欣喜若狂。第一天杰米支出1分钱,收入10万元。第二天,杰米支出2分钱,收入10万元。到了第10天,杰米共得100万元,而总共才付出5元1角2分。到了第20天,杰米共得200万元,而韦伯才得5千元多。杰米想:要是合同订、三个月该多好!结果杰米却破产了。孩子们,原因是什么?我期待着你们能帮帮我。

汉诺塔问题在数学界有很高的研究价值,而且至今还在被一些数学家们所研究,它可以帮助开发智力,激发我们的思维。让小学生接触这款益智游戏,利用一次次不断的探索和尝试,可以激发他们的兴趣,积极应对困难,获得成功体验,锻炼他们的思维,同时,培养主动探索,不服输的精神。数学磨砺孩子的思维品质。数学,是思维的体操;数学课堂应是师生思维活动的场所。数学学习的主要任务,其实就是发展学生的思维,要让学生学会思维的方式,形成良好的思维品质。课堂里知识的学习是有形的,思维的发展是无形的。如何让无形的思维发展转化为外在的有形体现,这就要求学生在掌握知识的过程中,理解掌握知识之间的内在联系,联系就是思维,联系就是方法,联系就是能力,我们要在数学学习过程中让孩子寻找到知识与知识之间的联系,知识与生活之间的联系等。只有建立联系学生才会触类旁通,一通百通。然而,学生的思维单靠老师是教不会的。靠的是学生自己在经验中的摸索、体悟和积累,依靠学生自主地将这种摸索和体悟所得进行内化,逐渐学会如何思维,这个过程只有孩子自己才能实现。

在活动过程中,教师应更善于引导学生积极动脑自己去找到游戏策略,让学生更多参与,更多发现,培养学生独立思考的良好学习习惯,同时,这样也有利于学生建立学习信心。

第三篇:汉诺塔实验(人工智能)

实验二——专家系统一、源代码

import javax.swing.JCheckBox;import javax.swing.JOptionPane;import javax.swing.JPanel;

public class Index extends javax.swing.JFrame {

jmilk = new javax.swing.JCheckBox();jclaw = new javax.swing.JCheckBox();jhoof = new javax.swing.JCheckBox();jbird = new javax.swing.JCheckBox();jloogLeg = new javax.swing.JCheckBox();jflyable = new javax.swing.JCheckBox();jeatMeat = new javax.swing.JCheckBox();jfur = new javax.swing.JCheckBox();jruminate = new javax.swing.JCheckBox();jswim = new javax.swing.JCheckBox();jfeather = new javax.swing.JCheckBox();jdogTooth = new javax.swing.JCheckBox();jflyest = new javax.swing.JCheckBox();jlayEgg = new javax.swing.JCheckBox();jblackWhite = new javax.swing.JCheckBox();jyellow = new javax.swing.JCheckBox();jinFlyable = new javax.swing.JCheckBox();jdarkDot = new javax.swing.JCheckBox();jhoofAnimal = new javax.swing.JCheckBox();jpredator = new javax.swing.JCheckBox();jmammal = new javax.swing.JCheckBox();jblackStrip = new javax.swing.JCheckBox();jgaze = new javax.swing.JCheckBox();jLabel1 = new javax.swing.JLabel();btnOk = new javax.swing.JButton();jloogNeck = new javax.swing.JCheckBox();private void initComponents(){ public Index(){ } initComponents();数组设置//:

checkBoxs[0] = jmilk;checkBoxs[1] = jclaw;checkBoxs[2] = jhoof;checkBoxs[3] = jbird;checkBoxs[4] = jloogLeg;checkBoxs[5] = jflyable;checkBoxs[6] = jeatMeat;checkBoxs[7] = jfur;checkBoxs[8] = jruminate;checkBoxs[9] = jswim;checkBoxs[10] = jfeather;checkBoxs[11] = jdogTooth;checkBoxs[12] = jflyest;checkBoxs[13] = jlayEgg;checkBoxs[14] = jblackWhite;checkBoxs[15] = jyellow;checkBoxs[16] = jinFlyable;checkBoxs[17] = jdarkDot;checkBoxs[18] = jhoofAnimal;checkBoxs[19] = jpredator;checkBoxs[20] = jmammal;checkBoxs[21] = jblackStrip;checkBoxs[22] = jgaze;checkBoxs[23] = jloogNeck;://数组设置

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jmilk.setText(“u5976”);jclaw.setText(“u722a”);jhoof.setText(“u8e44”);jbird.setText(“u9e1f”);jloogLeg.setText(“u957fu817f”);jflyable.setText(“u4f1au98de”);jeatMeat.setText(“u5403u8089”);

{

jfur.setText(“u6bdbu53d1”);jruminate.setText(“u53cdu520d”);jswim.setText(“u6e38u6cf3”);jfeather.setText(“u7fbdu6bdb”);jdogTooth.setText(“u72acu9f7f”);jflyest.setText(“u5584u98de”);jlayEgg.setText(“u4e0bu86cb”);jblackWhite.setText(“u9ed1u767du8272”);jyellow.setText(“u9ec4u8910u8272”);jinFlyable.setText(“u4e0du4f1au98de”);jdarkDot.setText(“u6697u6591u70b9”);jhoofAnimal.setText(“u6709u8e44u7c7bu52a8u7269”);jpredator.setText(“u98dfu8089u52a8u7269”);jmammal.setText(“u54fau4e73u52a8u7269”);jblackStrip.setText(“u9ed1u8272u6761u7eb9”);jgaze.setText(“u773cu775bu76efu7740u524du65b9”);jLabel1.setFont(new java.awt.Font(“黑体”, 0, 24));jLabel1.setText(“u4e13u5bb6u7cfbu7edf”);btnOk.setText(“u731cu731cu662fu4ec0u4e48uff1f”);btnOk.addActionListener(new java.awt.event.ActionListener(){

public void actionPerformed(java.awt.event.ActionEvent evt)} btnOkActionPerformed(evt);});jloogNeck.setText(“u957fu8116u5b50”);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout

.setHorizontalGroup(layout

.createParallelGroup(.addGroup(layout

.createSequentialGroup().addGap(35, 35, 35).addGroup(layout

.addGroup(layout

javax.swing.GroupLayout.Alignment.LEADING).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jmilk).addComponent(jclaw).addComponent(jhoof)

.addComponent(jbird)).addGap(44, 44, 44).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jeatMeat).addComponent(jfur).addComponent(jflyable).addComponent(jruminate)))

.addGroup(layout

.createSequentialGroup().addComponent(jloogLeg)

.addGap(32, 32, 32).addComponent(jswim)))

.addGap(26, 26, 26).addGroup(layout

.addComponent(.addComponent(btnOk).addGroup(layout

98,jLabel1,.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jflyest).addComponent(jdogTooth).addComponent(jfeather).addComponent(jlayEgg).addComponent(jgaze)).addGap(23, 23, 23).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jloogNeck).addGroup(layout

.createSequentialGroup().addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jyellow)

.addComponent(jblackWhite)

.addComponent(jinFlyable)

.addComponent(jdarkDot))

.addGap(18, 18, 18)

.addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jmammal)

.addComponent(jpredator)

.addComponent(jblackStrip)

.addComponent(jhoofAnimal))))))

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)));layout.setVerticalGroup(layout

.createParallelGroup(.addGroup(layout

.createSequentialGroup().addGroup(layout

.addGroup(layout

javax.swing.GroupLayout.Alignment.LEADING).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).createSequentialGroup().addGap(81, 81, 81).addComponent(jLabel1)

.addGap(65, 65, 65).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jfeather, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jfur).addComponent(jmilk).addComponent(jyellow)).addGap(18, 18,18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jdogTooth).addComponent(jeatMeat).addComponent(jclaw).addComponent(jblackWhite).addComponent(jpredator)).addGap(24, 24, 24).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jflyable)

.addComponent(jhoof)).addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jlayEgg)

.addComponent(jinFlyable)

.addComponent(jblackStrip))).addGap(18,18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jflyest).addComponent(jbird).addComponent(jruminate).addComponent(jdarkDot).addComponent(jhoofAnimal)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED))

.addGroup(layout

.createSequentialGroup().addContainerGap(175,Short.MAX_VALUE).addComponent(jmammal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(141, 141, 141)))

.addPreferredGap(.addGroup(layout

.addGroup(layout

javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jswim).addComponent(jgaze)

.addComponent(jloogNeck)).addComponent(jloogLeg))

.addGap(73, 73,.addGap(27, 27, 27)));73).addComponent(btnOk)pack();}// //GEN-END:initComponents

private void btnOkActionPerformed(java.awt.event.ActionEvent evt){

// TODO add your handling code here: if(jfur.isSelected()&& count()== 1){ show(“哺乳动物”);} else if(jmilk.isSelected()&& count()== 1){ show(“哺乳动物”);} else if(jfeather.isSelected()&& count()== 1){ 主要代码//:

show(“鸟”);} else if(jflyable.isSelected()&& jlayEgg.isSelected()&& count()

show(“鸟”);} else if(jeatMeat.isSelected()&& count()== 1){ show(“食肉动物”);} else if(jdogTooth.isSelected()&& jclaw.isSelected()&& show(“食肉动物”);} else if(jmammal.isSelected()&& jhoof.isSelected()&& count()show(“有蹄类动物”);} else if(jmammal.isSelected()&& jruminate.isSelected()&& show(“有蹄类动物”);} else if(jmammal.isSelected()&& jpredator.isSelected()&& show(“金钱豹”);} else if(jmammal.isSelected()&& jpredator.isSelected()&& show(“虎”);} else if(jhoofAnimal.isSelected()&& jloogNeck.isSelected()&& show(“长颈鹿”);== 2){ jgaze.isSelected()&& count()== 3){ == 2){ count()== 2){ jyellow.isSelected()&& jdarkDot.isSelected()&& count()== 4){ jyellow.isSelected()&& jblackStrip.isSelected()&& count()== 4){ jloogLeg.isSelected()&& jdarkDot.isSelected()&& count()== 4){

} else if(jhoofAnimal.isSelected()&& jblackStrip.isSelected()show(“斑马”);} else if(jbird.isSelected()&& jinFlyable.isSelected()&& && count()== 2){ jloogNeck.isSelected()&& jloogLeg.isSelected()&& jblackWhite.isSelected()&& count()== 5){

//GEN-BEGIN:variables

public static void main(String args[]){

} java.awt.EventQueue.invokeLater(new Runnable(){

public void run(){ } new Index().setVisible(true);public void show(String message){ }

public int count(){

} int sum = 0;for(int i = 0;i < checkBoxs.length;i++){

} return sum;if(checkBoxs[i].isSelected()){ } sum ++;JOptionPane.showMessageDialog(this, message);}

show(“鸵鸟”);} else if(jbird.isSelected()&& jinFlyable.isSelected()&& show(“企鹅”);} else if(jbird.isSelected()&& jflyest.isSelected()&& count()show(“信天翁”);} else { show(“我不知道是什么。。”);} jblackWhite.isSelected()&& jswim.isSelected()&& count()== 4){ == 2){ ://主要代码

});

} // Variables declaration-do not modify private javax.swing.JButton btnOk;private javax.swing.JLabel jLabel1;private javax.swing.JCheckBox jbird;private javax.swing.JCheckBox jblackStrip;private javax.swing.JCheckBox jblackWhite;private javax.swing.JCheckBox jclaw;private javax.swing.JCheckBox jdarkDot;private javax.swing.JCheckBox jdogTooth;private javax.swing.JCheckBox jeatMeat;private javax.swing.JCheckBox jfeather;private javax.swing.JCheckBox jflyable;private javax.swing.JCheckBox jflyest;private javax.swing.JCheckBox jfur;private javax.swing.JCheckBox jgaze;private javax.swing.JCheckBox jhoof;private javax.swing.JCheckBox jhoofAnimal;private javax.swing.JCheckBox jinFlyable;private javax.swing.JCheckBox jlayEgg;private javax.swing.JCheckBox jloogLeg;private javax.swing.JCheckBox jloogNeck;private javax.swing.JCheckBox jmammal;private javax.swing.JCheckBox jmilk;private javax.swing.JCheckBox jpredator;private javax.swing.JCheckBox jruminate;private javax.swing.JCheckBox jswim;private javax.swing.JCheckBox jyellow;// End of variables declaration//GEN-END:variables

public JCheckBox[] checkBoxs = new JCheckBox[24];

二、结果截图

示例1:

示例2:

三、推理树

第四篇:汉诺塔c语言程序代码

汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解)让我们先看看代码吧 #include int hj(int a,int b, int c,int i){ int t;if(i==1)

printf(“%d->%dn”,a,c);else {t=c;c=b;b=t;hj(a,b,c,i-1);printf(“%d->%dn”,a,b);t=a;a=c;c=t;t=b;b=c;c=t;hj(a,b,c,i-1);return 0;} } main(){ int a,b,c,i;a=1;b=2;c=3;printf(“请输入汉诺塔的盘数”);scanf(“%d”,&i);hj(a,b,c,i);return 0;}

以上是汉诺塔的代码,该程序主要是运用了递归的思想,比如数学中的f(x)=f(x-1)+f(x-2),在本程序中为:int hj(int a,int b, int c,int i){ int t;if(i==1)

printf(“%d->%dn”,a,c);else {t=c;c=b;b=t;hj(a,b,c,i-1);也就是说,我们在这个函数中再次调用这个函数,相当于一个循环,而在再次调用的过程中,i的值变成i-1,就类似于f(x-1),这样层层调用,最终就变成当i=1的时候的值,然后通过运算,计算出想要得到的值。汉诺塔的数值分析:

我们可以发现,当只有一个盘的时候,我们只需要做1->3(就是把第一个柱子上的最顶端的盘移动到第三根柱子,以下不再解释)当有两个盘的时候,是1->2

1->3

2->3 三个盘子是:1->3

1->2

3->2

1->3

2->1

2->3 分析一下可以得出以下结论: 初始值a=1 b=2 c=3 一个盘子就是a->c 两个盘子与一个盘子的关系是:

第一步:b与c交换值,然后打印a->c 第二步:打印a->b 第三步:a与c交换值,b与c交换值,打印a->c 进一步分析,便可以得出以下结论 只要盘子数量为i(i大于1),那么它就有三部分 第一部分,b与c交换值,然后运行i-1 第二部分,打印a->b 第三部分,a与c交换值,b与c交换值,然后运行i-1 程序表示便是: if(i==1)

printf(“%d->%dn”,a,c);else {t=c;c=b;(交换值)

b=t;hj(a,b,c,i-1);printf(“%d->%dn”,a,b);t=a;a=c;c=t;(a c交换)

t=b;b=c;c=t;(b c交换)

hj(a,b,c,i-1);不明加QQ765233918(请写清备注)

1->3

第五篇:C语言程序设计(汉诺塔问题)

C语言程序设计(汉诺塔设计)

#include void main(){void tian(int n,int x,int y,int z);

/*函数声明*/

int m;printf(“please enter the number of diskes:n”);scanf(“%d”,&m);printf(“the step of move %d diskes :”,m);tian(m,'A','B','C');

} void tian(int n,int x,int y,int z)

/*当我选定这一行的时候 然后单击组间选择调试

run to_

发现不管输入的x值是多少

ABC的值都是65 66 67

后来才发现原来是他们所代表的十进制的值*/ {void move(int x,int y);

if(n==1)move(x,z);

/*这里是递归函数的结束条件*/ else

{tian(n-1,x,z,y);move(x,y);

tian(n-1,y,x,z);} } void move(int x, int y)

/*

定义move函数用来显示移动的路线*/ {printf(“%c——>%cn”,x,y);

} /*汉洛塔问题:如果有N个盘子

那么可以简化为n-1个盘子和一个盘子来处理,只要先把上面的n-1个盘子从A——>B

把第n个盘子由A——>C 再把n-1个盘子由B——>C 即可;

n-1盘子

那么可以简化为n-2个盘子和一个盘子来处理

只要

把上面的n-2个盘子从A——>B

把第n个盘子由A——>C 再把n-1个盘子由B——>C 即可;

n-3盘子

那么可以简化为n-3个盘子和一个盘子来处理

只要

把上面的n-4个盘子从A——>B

把第n个盘子由A——>C 再把n-1个盘子由B——>C 即可;

N-4

.....4个盘子

那么可以简化为3个盘子和一个盘子来处理

只要 把上面的3个盘子有a 到b

把第4个盘子由a到c 再把上面的三个盘子由b到c;

3个盘子

可以简化为。。*/

下载汉诺塔探秘教学设计 胡小佳word格式文档
下载汉诺塔探秘教学设计 胡小佳.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    乌塔教学设计之二[小编整理]

    教学设计之二教学目标: 1.认识本课5个生字。 2.能有感情地朗读课文。 3.读懂课文内容,并能对课文的内容发表自己的见解。 教学过程:一、启发谈话,引入新课。 同学们喜欢旅游吗?旅游......

    看不见的爱教学设计胡佳蓓(最终版)

    课 题: 22、看不见的爱 (第二课时) 年 级: 四年级第二学期 执 教: 六师二附小 胡佳蓓 教学目标: 1、从母亲“递石子”的简单动作和“安详地微笑”的神情中,感受浓浓的母爱。 2、理......

    《家乡民俗探秘》教学设计

    四年级品德与社会《家乡民俗探秘》教学设计 教学目标 1、引导学生深入了解家乡的传统节日,以及知名度较高的民俗的形成、流失与演变情况。 2、列举家乡特色的民俗活动。 3、......

    《探秘二维码》教学设计及反思

    《探秘二维码》教学设计及反思 教材分析 本课是大连理工大学出版社出版的小学信息技术五年级下册第一单元“信息世界奇遇”第二课的内容。本课主要围绕当下流行的“二维码”......

    《乌塔》教学设计

    《乌塔》教学设计一、启发谈话,引入新课 1、与学生交流谈话:同学们,在上课之前,我们先来做一个调查好吗?和父母一起外出旅游过的同学请举手,独自一个人外出旅游过的同学请举手。(数......

    《乌塔》教学设计

    《乌塔》教学设计 教学目标: 1、学会6个生字,积累本课好词。 2、有感情地朗读课文,读懂课文内容。 3、能对文中的人和事进行评价,增强独立生活、自立自强的意识。 教学重点难点:......

    乌塔教学设计

    教学目标: 1、认识6个生字。 2、有感受情地朗读课文,读懂课文内容。 3、能对文中的人和事进行评价,增加独立生活、自强自立的意识。 教学重难点: 1、培养学生独立阅读的能力。 2......

    乌塔教学设计

    27﹡《乌塔》的教学设计教学目标: 1、认识6个生字。 2、有感情地朗读课文,读懂课文内容。 3、培养独立生活、自强自立的意识。 教学重难点: 1、培养学生独立阅读的能力。 2、引导......