• 回答数

    5

  • 浏览数

    351

susanwangyue
首页 > 职称论文 > 汉诺塔下的数学研究论文

5个回答 默认排序
  • 默认排序
  • 按时间排序

粉色小恶魔yiyi

已采纳

汉诺威塔是一款集娱乐与运算的智力游戏,它不仅能使人在休闲的时候放松心情,而且还能在玩的过程中不断的提高你的思维能力.

有三个柱子A, B, C. A柱子上叠放有n个盘子,每个盘子都比它下面的盘子要小一点,可以从上到下用1, 2, 。。。, n编号.要求借助柱子C,把柱子A上的所有的盘子移动到柱子B上.移动条件为:

1、一次只能移一个盘子

2、移动过程中大盘子不能放在小盘子上,只能小盘子放在大盘子上

本文的主要算法是利用函数的递归调用算法。首先,想办法将A座上的前n-1个盘借助C座移动到B座上,然后将A组上的第n个盘移动到C座上。然后再将B座上的n—1个盘借助A座移动到C座上,此次移动也和第一次移动一样,重复递归,直到最后一个盘为止。

192 评论

芳儿beauty

#include<>voidhanoi(intn,charA,charB,charC){if(n==1){printf("Movedisk%dfrom%cto%c\n",n,A,C);}else{hanoi(n-1,A,C,B);printf("Movedisk%dfrom%cto%c\n",n,A,C);hanoi(n-1,B,A,C);}}main(){intn;printf("请输入数字n以解决n阶汉诺塔问题:\n");scanf("%d",&n);hanoi(n,'A','B','C');}

352 评论

欧欧里里

汉诺塔算法介绍:把三根柱子按顺序排成“品”字型,把所有圆盘按从大到小的顺序放于柱子A上,根据圆盘数量来确定柱子排放的顺序:n若为偶数的话,顺时针方向依次摆放为:ABC;而n若为奇数的话,就按顺时针方向依次摆放为:ACB。这样经过反复多次的测试,最后就可以按照规定完成汉诺塔的移动。因此很简单的,结果就是按照移动规则向一个方向移动金片:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C。

332 评论

张小天11

算法介绍:当盘子的个数为n时,移动的次数应等于2^n–1。后来一位美国学者发现一种出人意料的简单方法,只要轮流进行两步操作就可以了。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上,根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放A、B、C;

若n为奇数,按顺时针方向依次摆放A、C、B。

所以结果非常简单,就是按照移动规则向一个方向移动金片:如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C

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

扩展资料

由来:

法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。

不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

不管这个传说的可信度有多大,如果考虑一下把64片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序。这需要多少次移动呢?这里需要递归的方法。假设有n片,移动次数是f(n).显然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。此后不难证明f(n)=2^n-1。n=64时,

假如每秒钟一次,共需多长时间呢?一个平年365天有31536000 秒,闰年366天有31622400秒,平均每年31556952秒,计算一下:709551615秒。

这表明移完这些金片需要亿年以上,而地球存在至今不过45亿年,太阳系的预期寿命据说也就是数百亿年。真的过了亿年,不说太阳系和银河系,至少地球上的一切生命,连同梵塔、庙宇等,都早已经灰飞烟灭。

参考资料来源:百度百科-汉诺塔

352 评论

甜甜的daisy

汉诺塔 汉诺塔的由来 汉诺塔是源自印度神话里的玩具。 上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。 上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗门至今还在一刻不停地搬动着圆盘。 汉诺塔与宇宙寿命 如果移动一个圆盘需要1秒钟的话,等到64个圆盘全部重新落在一起,宇宙被毁灭是什么时候呢? 让我们来考虑一下64个圆盘重新摞好需要移动多少次吧。1个的时候当然是1次,2个的时候是3次,3个的时候就用了7次......这实在是太累了 因此让我们逻辑性的思考一下吧。 4个的时候能够移动最大的4盘时如图所示。 到此为止用了7次。 接下来如下图时用1次,在上面再放上3个圆盘时还要用7次(把3个圆盘重新放在一起需要的次数)。 因此,4个的时候是 “3个圆盘重新摞在一起的次数”+1次+“3个圆盘重新摞在一起需要的次数” =2x“3个圆盘重新摞在一起的次数”+1次 =15次。 那么,n个的时候是 2x“(n-1)个圆盘重新摞在一起的次数”+1次。 由于1 个的时候是1次,结果n个的时候为(2的n次方减1)次。 1个圆盘的时候 2的1次方减1 2个圆盘的时候 2的2次方减1 3个圆盘的时候 2的3次方减1 4个圆盘的时候 2的4次方减1 5个圆盘的时候 2的5次方减1 ........ n个圆盘的时候 2的n次方减1 也就是说,n=64的时候是(2的64次方减1)次。 因此,如果移动一个圆盘需要1秒的话, 宇宙的寿命=2的64次方减1(秒) 用一年=60秒x60分x24小时x365天来算的话,大约有5800亿年吧。 据说,现在的宇宙年龄大约是150亿年,还差得远呢。 汉诺塔问题在数学界有很高的研究价值, 而且至今还在被一些数学家们所研究, 也是我们所喜欢玩的一种益智游戏, 它可以帮助开发智力,激发我们的思维。 汉诺塔的C语言实现 #include"" void move(char x,char y) { printf("%c-->%c\n",x,y); } void hanoi(int n,char one ,char two,char 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 m; printf("input the number of disks:"); scanf("%d",&m); printf("the step to moving %3d diskes:\n",m); hanoi(m,'A','B','C'); }

276 评论

相关问答

  • 汉语言文学研究类论文模板下载

    汉语言文学是一门有关语言的专业,其对语言文字的修养及其能力也是相对较高的。下文是我为大家整理的关于汉语言文学的毕业论文范文的内容,欢迎大家阅读参考! 浅谈重视汉

    mini灵灵 3人参与回答 2023-12-07
  • 伦敦轨道塔研究论文

    城市轨道交通具有安全、准时、快捷、舒适、环保等优点,已成为解决城市交通问题的根本途径。这是我为大家整理的城市轨道交通工程技术论文,仅供参考! 浅谈城市轨道交通工

    ShangHaiWendy 2人参与回答 2023-12-11
  • 筛板式精馏塔的研究学年论文

    谁有道客巴巴帐号,借用下。。。。。

    罗夕夕1976 3人参与回答 2023-12-10
  • 汉语言文学的论文研究

    文献法比较研究法综合归纳法等等加油哦,我就是汉语言文学专业毕业的

    淡淡的生活 5人参与回答 2023-12-07
  • 宁波诺丁汉毕业论文

    不知道你是学弟还是学妹- -。。。。。这个问题其实并不是那么好回答,不过身份一个宁波诺丁汉大学的学生,我可以说,宁诺的教学模式比很多国内知名大学(包括9

    傻喵喵123 5人参与回答 2023-12-10