规则:一共有三个柱子A,B,C,每个柱子上可以套多个圆盘,大圆盘必须在下,小圆盘在上,所有圆盘在这三个柱子之间移动,一次只能移动一个圆盘,最终实现将所有A柱上N个的圆盘移动到C柱上。
思路:先将除最大盘子以外的所有圆盘移动到B柱,再将最大的盘子移动到C柱,最后将剩余所有圆盘移动到C柱。
实现:递归思想
‘‘‘汉诺塔小游戏‘‘‘
i = 0
def hanno(n, a, b, c):
global i
i +=1
if n == 1:
print(a, ‘->‘, c)
return
else:
hano(n-1, a, c, b) # 将n-1个圆盘从a移动到b
print(a, ‘->‘, c) # 将第n个圆盘从a移动到c
hano(n-1, b, a, c) # 将剩余n-1个圆盘从b移动到c
num = int(input(‘>>请输入汉诺塔层数:‘))
hano(num, ‘A‘, ‘B‘, ‘C‘)
print(f‘一共移动了{i}次‘)
原文:https://www.cnblogs.com/travellingcat/p/14506458.html