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

时间:2019-05-11 23:51:57下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言程序设计(汉诺塔问题)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言程序设计(汉诺塔问题)》。

第一篇: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个盘子

可以简化为。。*/

第二篇:汉诺塔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

第三篇:汉诺塔教学反思

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

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

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

过程课中,第一,开始通过师生会话自然导入,如:你喜欢玩游戏吗?你还想继续玩吗?通过传说中关于世界末日的预言,让学生迫不及待的想找到问题的答案。第二,通过让学生到黑板上贴标题的方法,一方面自然出现课题,另一方面通过这种活动又复习了游戏规则,让学生通过活动说出游戏规则。如,师:孩子们,眼睛看到这儿来,你发现了什么? 生:老师,汉诺塔这款游戏器具既有立柱,还有圆盘,我发现黑板上只有三根立柱,而缺少圆盘。师:孩子,你有一双善于发现的眼睛。圆盘在老师手里。谁来将这三个纸质圆盘贴到黑板上的第一根圆柱上?生贴师:大家同意他的贴法吗?理由是什么?师:同学们同意他的观点吗?生:。。师:是的,小盘在上,大盘在下,这是我们玩这款游戏的规则之一(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:

三、推理树

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

数学游戏汉诺塔 教学设计

彭州市通济镇蓝天小学

胡小佳

教学内容: 教学目标: 四年级下期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千多亿年,当这个操作完成时,可能我们人类的世界真的都不复存在了。

十、结束语

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

附:学生活动记录表

下载C语言程序设计(汉诺塔问题)word格式文档
下载C语言程序设计(汉诺塔问题).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


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

相关范文推荐

    C语言程序设计

    1. Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。 Input 无 Output 请输出: Hello Da_min, He......

    C 语言程序设计

    《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业......

    汉诺庄园简介最新(五篇)

    汉诺庄园简介汉诺庄园成立于2006年7月,为山东汉诺集团有限公司全资控股子公司,总投资5亿元,总规划面积2000亩,分三期开发建设,目前一二期工程已竣工并投入运营,三期工程已完成规划......

    经典C语言程序设计例题

    经典C语言程序设计例题 【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组......

    第一章 C语言程序设计

    第一章 C语言程序设计 考试形式:试卷(全国统一 4月第二个星期六9月倒数第二个星期六) 笔试: 满分100分60分及格 时间:90分钟内容: 70分 C语言知识30分 公共基础 选择题:60分 前......

    C语言程序设计心得体会

    C语言程序设计心得体会在这为期半个月的时间内,通过我们小组各成员之间的相互讨论和合作,我们完成了学生信息管理系统的程序设计,更值得高兴的是我们的程序得到了大家的喜爱,在......

    语言程序设计练习题 2

    汇编语言程序设计练习题 一、单项选择题:在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一......

    C语言程序设计策划书

    信息工程学院学生会科技部 关于举办信息工程学院C语言程序设计大赛的策划书 一、活动背景: 随着计算机技术的快速发展,计算机程序语言的多样化,C语言已经使用的越来越广泛,C语言......