Python解决汉诺塔(递归算法)

本文介绍了一个经典的递归算法实现——汉诺塔问题。通过定义move函数并使用递归调用的方式解决了将不同数量的盘子从一个柱子移动到另一个柱子的问题,并展示了如何通过递归思想简化复杂问题。

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

def move(n, a, b, c):                   定义一个函数(包含4个变量,盘子数n,和三个柱子a,b,c)    
     if n==1:                  
        print a,'-->',c                      当只有1个盘子时,直接从柱子a移动到柱子c
        return
    else:
        move(n-1,a,c,b)                   把柱子a上的n-1个盘子通过柱子c移动到柱子b上

        move(1,a,b,c)                      把柱子a上最后1个盘子移到柱子c上
        move(n-1,b,a,c)                   把柱子b上的n-1个盘子通过柱子a移动到柱子c上

print move(4, 'A', 'B', 'C')
黄色部分:递归算法的函数定义

紫色部分:函数调用

def move(n, a, b, c):
    if n==1:
        print a,'-->',c
        return
    else:
        move(n-1,a,c,b)
        move(1,a,b,c)
        move(n-1,b,a,c)
print move(4, 'A', 'B', 'C')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值