汉诺塔问题的Python代码实现

问题描述

有一个梵塔,塔内有三个座A、B、C,A座上有诺干个盘子,盘子大小不等,大的在下,小的在上(如图)。把这些个盘子从A座移到C座,中间可以借用B座但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。要求给出移动方案,并打印每移动一步后的状态。

在这里插入图片描述

思路

思路:我们最终的目标是把所有的圆盘移动到C上去,可以考虑使用递归的思想来解决。

假设现在在A柱上还有N个圆盘,那么首先通过把C作为辅助柱把A上N-1个圆盘放到B上去;然后把A最下面的那个圆盘放到C上,此时A上无圆盘,B上有N-1个圆盘,C上有一个圆盘;最后把A当做辅助柱,把B上的N-1个圆盘放到C上去就OK了。

知道了N个圆盘怎么移动,那么N-1个圆盘需要怎样移动了?显然,步骤同上,这样就一层一层的往下找解决方案,也就是递归。

代码

在这里插入图片描述在这里插入图片描述

结果

在这里插入图片描述
更多精彩内容,请关注“探索GIS的小蜗牛”。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47127612/article/details/105586958