数据结构与算法:汉诺塔问题学习记录(疑问mooc测试题未通过)

三柱汉诺塔问题

汉诺塔问题是法国数学家Edouard Lucas在1883年根据传说提出来的。传说在一个印度教寺庙里,由三根柱子,其中一根套着64个由小到大的黄金盘片,僧侣们的任务就是要把一叠黄金盘从一根柱子搬到另外一根,但是有两个规则:

  • 一次只能移动一个盘子
  • 大盘子不能叠在小盘子上
    在这里插入图片描述三柱汉诺塔是经典的递归算法问题,其基本思路是
  • 1.将前n-1个盘子经由3#号柱子移动至2#柱子
  • 2.将第n个盘子移动至3#号柱子
  • 3.将前n-1个盘子经由1#号柱子移动至3#号柱子

Python代码实现如下:

def movedisk(disk,frompole,topole):
    print('{}:{}->{}'.format(disk,frompole,topole))
def movetower(height,frompol,topol,endpol):
    if height>=1:
        movetower(height-1,frompol,endpol,topol)
        movedisk(height,frompol,endpol)
        movetower(height-1,topol,frompol,endpol)

movetower(3,'a','b','c')
1:a-&g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值