古代有一座汉诺塔,塔内有3个座A、B、C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示。
有一个和尚想把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且自移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座来放盘子。
现在我编写一个程序(其实就是运用了递归思想)输入一个正整数,表示汉诺塔内的盘子个数n(1<=n<=64)然后输出移动的步骤。
步骤一:代码如下:
def move(x,y):
print("%s --> %s"%(x,y))
def hanoi(n,one,two,three):
if n==1:
move(one,three)
else:
hanoi(n-1,one,three,two)
move(one,three)
hanoi(n-1,two,one,three)
def main():#main函数
m=int(input())#输入盘子个数
hanoi(m,'A','B','C')
main()
步骤二:执行代码,现在我输入4,即4个盘子,看看搬运的步骤是怎么样的:
附: