Python基础入门学习笔记 024 递归:汉诺塔

发布时间 2023-08-23 09:58:09作者: 一杯清酒邀明月
递归求解汉诺塔

•对于游戏的玩法,我们可以简单分解为三个步骤

–将前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')