汉诺塔(python)实现

本文介绍了汉诺塔问题的背景及其在计算机科学中的地位,使用Python编程语言详细阐述了解决这一经典递归问题的算法,并展示了运行结果。
摘要由CSDN通过智能技术生成

汉诺塔问题: 古代有一个梵塔,塔内有三个基座,A,B,C,开始时A基座上有64个盘子,盘子的大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A基座上移动到B基座上,但每次只允许移动一个盘子,且在移动过程中,3个基座上的盘子都始终保持着大盘在下,小盘在上。移动过程中可以利用C基座做辅助。

此问题又被称为“世界末日问题”,因为以最高效的移动(无不必要的移动)方法,以每秒移动一次的速度,64 个盘子也需要近580亿年的时间。

'''
算法:大规模转化为小规模问题,把上面的n-1个盘子看做一个小盘子,那就只有两个盘子,转化成移动两个盘子的问题。
    第一步:把上面n-1个盘子借助B基座先移动到C基座上
    第二步:把最底下那个盘子移动到B基座
    第三步:再把C基座上的n-1个盘子借助A基座移动到B基座上
    
    记作hanoi(n,a,b,c):a,b,c不代表固定的基座,根据移动次数变化
        n:问题的规模,盘子的个数
        a:代表每次移动时的起始基座
        b:代表每次移动时的终点基座
        c:代表每次移动时的辅助基座
        
    则此问题的步骤:
        第一步:hanoi(n-1,a,c,b)
        第二步:把最下面的那个大盘子从起点基座移动到终点基座
        第三步:hanoi(n-1,c,b,a)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值