python数据结构:汉诺塔问题-递归

汉诺塔问题:递归思路

❖将盘片塔从开始柱,经由中间柱,移动到目标柱:
首先将上层N-1个盘片的盘片塔,从开始柱,经由目标柱,移动到中间柱;
然后将第N个(最大的)盘片,从开始柱,移动到目标柱;
最后将放置在中间柱的N-1个盘片的盘片塔,经由开始柱,移动到目标柱。

❖基本结束条件,也就是最小规模问题是:1个盘片的移动问题

def moveTower(height,fromPole,withPole,toPole):
    if height>=1:
        moveTower(height-1,fromPole,toPole,withPole)
        moveDisk(height,fromPole,toPole)
        moveTower(height-1,withPole,fromPole,toPole)
def moveDisk(disk,fromPole,toPole):
    print(f"Moving disk[{disk}] from {fromPole} to {toPole}")

moveTower(3,'#1','#2','#3')#第一个参数height不要超过10,计算时间太久,计算机承受不起 
Moving disk[1] from #1 to #3
Moving disk[2] from #1 to #2
Moving disk[1] from #3 to #2
Moving disk[3] from #1 to #3
Moving disk[1] from #2 to #1
Moving disk[2] from #2 to #3
Moving disk[1] from #1 to #3
发布了51 篇原创文章 · 获赞 34 · 访问量 908

猜你喜欢

转载自blog.csdn.net/weixin_43412569/article/details/104856371