Skip to content

Commit e20002d

Browse files
authored
Merge pull request #10 from hushaoqing/master
河内塔 => 汉诺塔
2 parents 770bf9a + be9729b commit e20002d

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

4.递归/4.10.河内塔游戏/README.md renamed to 4.递归/4.10.汉诺塔游戏/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
## 4.10.河内塔游戏
1+
## 4.10.汉诺塔游戏
22

3-
河内塔是由法国数学家爱德华·卢卡斯在 1883 年发明的。他的灵感来自一个传说,有一个印度教寺庙,将谜题交给年轻的牧师。在开始的时候,牧师们被给予三根杆和一堆 64 个金碟,每个盘比它下面一个小一点。他们的任务是将所有 64 个盘子从三个杆中一个转移到另一个。有两个重要的约束,它们一次只能移动一个盘子,并且它们不能在较小的盘子顶部上放置更大的盘子。牧师日夜不停每秒钟移动一块盘子。当他们完成工作时,传说,寺庙会变成灰尘,世界将消失。
3+
汉诺塔是由法国数学家爱德华·卢卡斯在 1883 年发明的。他的灵感来自一个传说,有一个印度教寺庙,将谜题交给年轻的牧师。在开始的时候,牧师们被给予三根杆和一堆 64 个金碟,每个盘比它下面一个小一点。他们的任务是将所有 64 个盘子从三个杆中一个转移到另一个。有两个重要的约束,它们一次只能移动一个盘子,并且它们不能在较小的盘子顶部上放置更大的盘子。牧师日夜不停每秒钟移动一块盘子。当他们完成工作时,传说,寺庙会变成灰尘,世界将消失。
44

55
虽然传说是有趣的,你不必担心世界不久的将来会消失。移动 64 个盘子的塔所需的步骤数是 `2^64 -1 = 18,446,744,073,709,551,615264-1 = 18,446,744,073,709,551,615`。以每秒一次的速度,即`584,942,417,355584,942,417,355` 年!。
66

77
Figure 1 展示了在从第一杆移动到第三杆的过程中的盘的示例。请注意,如规则指定,每个杆上的盘子都被堆叠起来,以使较小的盘子始终位于较大盘的顶部。如果你以前没有尝试过解决这个难题,你现在应该尝试下。你不需要花哨的盘子,一堆书或纸张都可以。
88

9-
![4.10.河内塔游戏.figure1](assets/4.10.%E6%B2%B3%E5%86%85%E5%A1%94%E6%B8%B8%E6%88%8F.figure1.png)
9+
![4.10.汉诺塔游戏.figure1](assets/4.10.%E6%B2%B3%E5%86%85%E5%A1%94%E6%B8%B8%E6%88%8F.figure1.png)
1010

1111

1212
*Figure 1*
@@ -19,7 +19,7 @@ Figure 1 展示了在从第一杆移动到第三杆的过程中的盘的示例
1919
2. 将剩余的盘子移动到目标杆。
2020
3. 使用起始杆将 `height-1` 的塔从中间杆移动到目标杆。
2121

22-
只要我们遵守规则,较大的盘子保留在栈的底部,我们可以使用递归的三个步骤,处理任何更大的盘子。上面概要中唯一缺失的是识别基本情况。最简单的河内塔是一个盘子的塔。在这种情况下,我们只需要将一个盘子移动到其最终目的地。 一个盘子的塔将是我们的基本情况。 此外,上述步骤通过在步骤1和3中减小塔的高度,使我们趋向基本情况。Listing 1 展示了解决河内塔的 Python 代码。
22+
只要我们遵守规则,较大的盘子保留在栈的底部,我们可以使用递归的三个步骤,处理任何更大的盘子。上面概要中唯一缺失的是识别基本情况。最简单的汉诺塔是一个盘子的塔。在这种情况下,我们只需要将一个盘子移动到其最终目的地。 一个盘子的塔将是我们的基本情况。 此外,上述步骤通过在步骤1和3中减小塔的高度,使我们趋向基本情况。Listing 1 展示了解决汉诺塔的 Python 代码。
2323

2424
````
2525
def moveTower(height,fromPole, toPole, withPole):

0 commit comments

Comments
 (0)