Discuss / Python / 解决这个问题要从整体上出发

解决这个问题要从整体上出发

Topic source

在回答这个问题之前,先问个问题:“如何把大象装进冰箱?” 答案是: 1.打开冰箱 2.把大象装进冰箱 3.关上冰箱门

同样的道理,也适用于汉诺塔。

假设金属圆盘n, 当n>1的时候,我们把金属圆盘分成两个部分: 1.底部最大圆盘为 1 2.上面部分的圆盘为 n-1

即:总共金属圆盘(n) = 底部最大圆盘(1) + 上面部分的圆盘(n-1)

现在有A、B、C三根柱子,金属圆盘都放在A柱上。 最终目的想要把金属圆盘,从A柱 移动到 C柱。 步骤1:把上面部分的圆盘(n-1),移动到 B柱先 即 move(n-1, a, c, b) 步骤2:把底部最大的圆盘 1,移动到 C柱 即 move(1, a, b, c) 最后一步:把刚刚B柱上的 “上面部分的圆盘(n-1)”, 移动到C柱 即 move(n-1, b, a, c) 至此,所有步骤就完成了!

者之梦

#2 Created at ... [Delete] [Delete and Lock User]

额嗯


  • 1

Reply