递归求解汉诺塔
•对于游戏的玩法,我们可以简单分解为三个步骤
–将前63个盘子从X移动到Y上。
–将最底下的第64个盘子从X移动到Z上。
–将Y上的63个盘子移动到Z上。
•问题一:将X上的63个盘子借助Z移到Y上;
•问题二:将Y上的63个盘子借助X移到Z上。
•对于游戏的玩法,我们可以简单分解为三个步骤
–将前63个盘子从X移动到Y上。
–将最底下的第64个盘子从X移动到Z上。
–将Y上的63个盘子移动到Z上。
•问题一:将X上的63个盘子借助Z移到Y上;
•问题二:将Y上的63个盘子借助X移到Z上。
实例:
1 def hanoi(n, x, y, z):
2 if n == 1:
3 print(x, ' --> ', z)
4 else:
5 hanoi(n-1, x, z, y) # 将前n-1个盘子从x移动到y上
6 print(x, ' --> ', z) # 将最底下的最后一个盘子从x移动到z上
7 hanoi(n-1, y, x, z) # 将y上的n-1个盘子移动到z上
8
9 n = int(input('请输入汉诺塔的层数:'))
10 hanoi(n, 'X', 'Y', 'Z')