python实现汉诺塔

汉诺塔问题规则:

  1. 每次移动一个子
  2. 任何时候大盘子在下面,小盘子在上面

编程思路:

  1. n=1:直接把A上的一个盘子移动到c上,A-->C
  2. n=2:A-->B  A-->C   B-->C
  3. n=3:
  • 把A上的两个盘子,通过C移动到B上去,调用递归实现;
  • 把A剩下的一个最大盘子移动到C上,A-->C;
  • 把B上两个盘子,借助于A,揮到C上去,调用递归

     4.n=n:

  • A把A上的n1个盘子,借助于C,移动B上去,调用递归
  • B把A上的最大盘子,也足一个,移动到C上,A>C
  • c把B上n1个盟子:助于A,移动到C上,调用递归
def hanno(n,a,b,c):
    if n==1:
        print(a,"-->",c)
    return hanno
    hanno(n-1,a,c,b)
    print(a,"-->",c)
    hanno(n-1,b,a,c)
    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值