def hannoi(n: int, x: str, y: str, z: str):
""" 汉诺塔 """
if n == 1: # 一块圆盘,直接移动到Z
print(x, ' -> ', z)
else:
# 不为一块圆盘,先将n-1个圆盘,从X通过Z,移动到Y
hannoi(n - 1, x, z, y)
print(x, ' -> ', z) # X上只剩一块,然后移动到Z
hannoi(n - 1, y, x, z) # 再将n-1块圆盘,从Y通过X移动到Z
if __name__ == '__main__':
hannoi(4, 'X', 'Y', 'Z')
# X -> Y
# X -> Z
# Y -> Z
# X -> Y
# Z -> X
# Z -> Y
# X -> Y
# X -> Z
# Y -> Z
# Y -> X
# Z -> X
# Y -> Z
# X -> Y
# X -> Z
# Y -> Z
小破站讲解视频:汉诺塔实现讲解