一、基本思路
解决汉诺塔问题的最核心思路是降维攻击,噢,不对,是递归法。
把5层汉诺塔降维成4层,4层降成3层...到1层时,直接把盘子移动到目标杆即可。
我们汉诺塔的三个杆子分别命名为源杆,缓冲杆,目标杆。在降维的过程中三种类型的杆会相互转变,即源杆变成目标杆或缓冲杆,要特别注意这种变化。
递归法可以很好的解决需要降维解决的问题。(具体过程直接在下述程序中给与解释)
二、程序实现
#-*- coding=utf-8 -*-
# 20150903 by PosPro
# http://blog.youkuaiyun.com/pospro
def moveTower(height, fromPole, bufferPole, targetPole):
if height>=1: #一直执行,直到没有盘子了
moveTower(height-1, fromPole, targetPole, bufferPole)
#降低一维,将除底层外的所有盘子移到缓冲杆(而不是目标杆)
moveSingleDisk(fromPole, targetPole)
#由于上面的盘子都已经拿走,此步直接将最大盘子移到目标杆
moveTower(height-

本文介绍如何使用Python通过递归法解决汉诺塔问题,详细阐述了基本思路,包括将问题逐步降维至一层并移动盘子至目标杆。同时,给出了程序实现和测试案例。
最低0.47元/天 解锁文章
1328

被折叠的 条评论
为什么被折叠?



