Python递归实现经典汉诺塔问题

汉诺塔

汉诺塔介绍

  • 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。汉诺塔

递归

  • 函数直接或者间接地调用自己。是编程中常用的思想,简化代码编写,加重CPU负担的一个典型的以资源换方便的方法

思路以及实现

思路

  • 先考虑一个盘子的情况,直接A–>C
  • 再考虑两个盘子的情况,A–>B,A–>C,B–>C
  • 然后考虑三个盘子的情况,把最底下一个盘子当成不存在,那么问题又变为两个盘子的情况,具体做法是将上面两个盘子全部移动到B,再把最大的盘子移到C,然后把B当成两个盘子情况下的A,再重复两个盘子的方法,解决
  • 最后想下四个盘子的情况,同样把最底下的盘子当成不存在,我们要把上面3个盘子移动到B,那么就是三个盘子的情况,三个小的移动到B之后,把最大的从A–>C,然后再把B当成A继续重复第三种情况的做法,递归解决

代码实现

    #  @Intro: 汉诺塔
    #  A,B,C三个支架子,A上放了从下往上从大到小的盘子
    #  现在要求把A上的盘子移动到C上,B可以作为中间暂时放置的媒介
    #  但是在移动的过程中必须遵守小盘子必须在大盘子上面,
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值