汉诺塔问题

这篇文章详细介绍了如何使用递归算法解决汉诺塔问题,通过将n个圆盘从A柱移动到C柱,保持大盘在下的规律,包括三个步骤:先转移n-1个到B,再转移1个到C,最后再转移n-1个。通过示例展示了具体的移动过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有三个立柱A、B、C。A柱上穿有大小不等的圆盘N个,较大的圆盘在下,较小的圆盘在上。要求把A柱上的圆盘全部移到C柱上,保持大盘在下、小盘在上的规律(可借助B柱)。每次移动只能把一个柱子最上面的圆盘移到另一个柱子的最上面。请输出移动过程。

输入描述:

输入一个整数n

输出描述:

输出移动过程

示例 
输入
3
复制
输出
a->c
a->b
c->b
a->c
b->a
b->c
a->c

def hano(n,a,b,c):
    if n==1:
        print(a+"->"+c)
        return
    hano(n-1,a,c,b)   #第一步通过调用外层函数将n-1个盘从A搬到B
    hano(1,a,b,c)     #第二步将A剩余的最后一个盘搬到C
    hano(n-1,b,a,c)   #第三步再通过调用外层函数将n-1个盘从B搬到C

n=int(input())
hano(n,"a","b","c")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠溪居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值