第一篇:汉诺塔教学反思
师生问答对话的探索----《汉诺塔》教学反思
山东省日照市文登路小学 刘卫妮
汉诺塔游戏,起源于古印度的一个传说,这一堂从游戏中开始的数学课,将一改有些学生认为“数学很枯燥的”的想法,通过让学生自己动手去体验,不仅是在学习数学知识,更是在训练数学思维。揭开的不仅是谜底,更是想教给学生如何学好数学的一种方法。下面,我将对师生问答对话进行一下反思。
过程课中,第一,开始通过师生会话自然导入,如:你喜欢玩游戏吗?你还想继续玩吗?通过传说中关于世界末日的预言,让学生迫不及待的想找到问题的答案。第二,通过让学生到黑板上贴标题的方法,一方面自然出现课题,另一方面通过这种活动又复习了游戏规则,让学生通过活动说出游戏规则。如,师:孩子们,眼睛看到这儿来,你发现了什么? 生:老师,汉诺塔这款游戏器具既有立柱,还有圆盘,我发现黑板上只有三根立柱,而缺少圆盘。师:孩子,你有一双善于发现的眼睛。圆盘在老师手里。谁来将这三个纸质圆盘贴到黑板上的第一根圆柱上?生贴师:大家同意他的贴法吗?理由是什么?师:同学们同意他的观点吗?生:。。师:是的,小盘在上,大盘在下,这是我们玩这款游戏的规则之一(PPT出示),汉诺塔仅仅这一个规则吗?生:老师,我知道。玩汉诺塔还有一个规则是:一次只能移动一个圆盘。师:说的很好。请同学们仔细观察,看老师的操作是否正确,并说出理由。(师故意做错误演示)生:。。第三,注重在各个环节中渗透对学生的情感目标。比如“师:孩子们知道了游戏规则,我想征求大家的意见,此时,你最想干什么?”通过询问,拉近和学生的距离,建立一种平等民主的教学环境。又如“师:XX同学,不仅善于分析,还讲述的非常清楚,跟大家分享了他的成功。孩子们,分享别人的成功,也是一种进步。”让学生知道要取长补短,互相学习。第四,通过让学生找最少步数之间的规律进行拓展延伸,找到里面的数学奥秘,让学生觉得数学是很有趣的,数学无处不在,我们可以用数学问题解释生活中的很多事情。如,师:要是我们一直这样做下去,还没有做到咱们所有的9个圆盘的游戏,就已经下课了,来,我们先一起看一下我们的研究成果,认真看,你发现这些数字有什么规律了吗?最后,作为奖励我给学生讲了一个小故事,这个故事正好体现了本节课的数学问题,让学
生在课下研究探索,找到问题的答案,寓教于乐。师:同学们,今天的这堂课老师分享了你们的成功和快乐,老师有一个故事也想和大家分享一下,“百万富翁的破产”:杰米是百万富翁,一天,他碰到上一件奇怪的事。一个叫韦伯的人对他说,我想和你订个合同,我将在整整一个月中每天给你10万元,而你第一天只需给我1分钱,以后你每天给我的钱是前一天的两倍。杰米说,真的?!你说话算数? 合同开始生效了,杰米欣喜若狂。第一天杰米支出1分钱,收入10万元。第二天,杰米支出2分钱,收入10万元。到了第10天,杰米共得100万元,而总共才付出5元1角2分。到了第20天,杰米共得200万元,而韦伯才得5千元多。杰米想:要是合同订、三个月该多好!结果杰米却破产了。孩子们,原因是什么?我期待着你们能帮帮我。
汉诺塔问题在数学界有很高的研究价值,而且至今还在被一些数学家们所研究,它可以帮助开发智力,激发我们的思维。让小学生接触这款益智游戏,利用一次次不断的探索和尝试,可以激发他们的兴趣,积极应对困难,获得成功体验,锻炼他们的思维,同时,培养主动探索,不服输的精神。数学磨砺孩子的思维品质。数学,是思维的体操;数学课堂应是师生思维活动的场所。数学学习的主要任务,其实就是发展学生的思维,要让学生学会思维的方式,形成良好的思维品质。课堂里知识的学习是有形的,思维的发展是无形的。如何让无形的思维发展转化为外在的有形体现,这就要求学生在掌握知识的过程中,理解掌握知识之间的内在联系,联系就是思维,联系就是方法,联系就是能力,我们要在数学学习过程中让孩子寻找到知识与知识之间的联系,知识与生活之间的联系等。只有建立联系学生才会触类旁通,一通百通。然而,学生的思维单靠老师是教不会的。靠的是学生自己在经验中的摸索、体悟和积累,依靠学生自主地将这种摸索和体悟所得进行内化,逐渐学会如何思维,这个过程只有孩子自己才能实现。
在活动过程中,教师应更善于引导学生积极动脑自己去找到游戏策略,让学生更多参与,更多发现,培养学生独立思考的良好学习习惯,同时,这样也有利于学生建立学习信心。
第二篇:汉诺塔c语言程序代码
汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解)让我们先看看代码吧 #include
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
第三篇:汉诺塔实验(人工智能)
实验二——专家系统一、源代码
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语言程序设计(汉诺塔设计)
#include
/*函数声明*/
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个盘子
可以简化为。。*/
第五篇:汉诺塔探秘教学设计 胡小佳
数学游戏汉诺塔 教学设计
彭州市通济镇蓝天小学
胡小佳
教学内容: 教学目标: 四年级下期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千多亿年,当这个操作完成时,可能我们人类的世界真的都不复存在了。
十、结束语
同学们今天老师和大家一起探索了汉诺塔的奥秘。一个小小的游戏里边竟然包含着巨大的数学智慧。其实数学无处不在,只要我们打开自己敏锐的数学直觉、认真观察,学会收集整理信息并加以归纳,我们就能在自己周围的事物中发现更多的数学奥秘。
附:学生活动记录表