美文网首页
河内之塔 - 汉诺塔

河内之塔 - 汉诺塔

作者: lyking | 来源:发表于2019-09-29 15:30 被阅读0次

说明

河内之塔(Towersof Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时 北越的首都,即现在的胡志明市;1883年法国数学家 EdouardLucas曾提及这个故事,据说创世 纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64 个由上至下依由小至大排列的金盘(Disc) ,并命令僧侣将所有的金盘从第一根石棒移至第根三 石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬 运完毕之时,此塔将毁损,而也就是世界末日来临之时。

解法

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上的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。到此,完成了三个圆盘的移动过程。

从上面分析可以看出

1、当n=1时,将A移到C上

2、当n大于等于2时, 移动的过程可分解为三个步骤:

第一步:把A上的n-1个圆盘移到B上;

第二步:把A上的一个圆盘移到C上;

第三步:把B上的n-1个圆盘移到C上;其中第一步和第三步是类同的。 当n=3时,第一步和第三步又分解为类同的三步,即把n'-1个圆盘从一个针移到另一个针上,这里的n'=n-1。

image.png

相关文章

  • 河内之塔 - 汉诺塔

    说明 河内之塔(Towersof Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河...

  • 递归之汉诺塔问题

    我的博客:递归之汉诺塔问题 一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的...

  • 一文带你吃透汉诺塔和其变形题

    普通汉诺塔 感兴趣的童鞋可以与我联系和交流~ 汉诺塔(港台:河内塔)(Tower of Hanoi)是根据一个传说...

  • Python汉诺塔递归算法

    汉诺塔含义: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石...

  • 汉诺塔的图解递归算法

    原文链接(转载请注明出处)汉诺塔的图解递归算法 起源 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大...

  • 汉诺塔——python

    汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时...

  • Python河内之塔 汉诺塔问题

  • 汉诺塔问题py实现

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根[金刚石]柱子,在一...

  • Python学习笔记——递归函数

    1.设置递归层数 2. 阶乘 3.斐波那契数列 4. 汉诺塔 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智...

  • 第一节、汉诺塔与栈

    1、汉诺塔 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根柱子,在一根柱子...

网友评论

      本文标题:河内之塔 - 汉诺塔

      本文链接:https://www.haomeiwen.com/subject/csbfpctx.html