题目
不清楚汉诺塔规则可以点击查看。
要求:A、B、C 3个柱子,现在要求以C柱子为辅助,将数量为n的圆盘从A柱子移到B柱子(圆盘最大的在最下面)。
分析
- A柱子为源柱子,B柱子为目标柱子,C柱子为辅助柱子。
- 把A柱子的n-1个圆盘移动到C柱子。
- 把A柱子剩余的最大圆盘移动到B柱子。
- 把C柱子的n-1个圆盘移动到B柱子。
- C柱子的n-1个怎么移动呢?按照上述步骤递归处理。
代码实现
1 | def mov(a, b, c, n): # n表示圆盘个数,a/b/c分别为源/目标/辅助柱子 |
使用3个列表模拟A、B、C柱子。
注释部分可打印出具体移动过程。