zoukankan      html  css  js  c++  java
  • python数据结构_递归_汉诺塔问题

    已经不是第一次写这个汉诺塔问题, 其实递归还真是不太好理解, 因为递归这种是想其实有点反人类, 为什么?

    因为不太清楚, 写个循环一目了然, 用递归其实要把核心逻辑理清楚, 要不根本没法进行下去

    所有才有了俗语:人用循环, 神用递归.

    看来我也是普通人啊, 这个汉诺塔问题是递归必将的案例, 但是没有一个讲的很清楚的, 大部分都是把原理说了一遍, 还是需要自己来思考

    反正我写了半天, 也没有自己搞出来, 大家不要笑我, 我是学工商管理的,

    递归 说白了了就是数学归纳法, lz数学还是不错的, 所有我认为可以解决掉这个难题:

    1. 分析了:说起来思想很简单, 当然代码也是相当简单,其实就是

    1个盘子的时候, A->C

    我们把上面n-1个盘子看成一个整体来操作.

    我们要想移动最下面的盘子, 需要把上面n-1个盘子移到B盘子上去

    这一步move(n-1, a, c, b)

    然后移过去了, 我们需要打印一下print(A->C)

    剩下n-1个盘子在哪? 对在 B盘子上, 同理操作是将这n-1个盘子移动到C上, 就ok啦

    move(n-1, b, a, c)

    就OK了

    def move(n, a, b, c):

      if n== 1:

        print(a, "->", c)

      else:

        move(n-1, a, c, b)

        print(a, "->", c)

        move(n-1, b,a, c)

  • 相关阅读:
    Redis主从同步原理-SYNC【转】
    redis3.0集群部署和测试
    Zabbix3.0配置邮件报警
    3分钟学会git命令的基础使用
    Rsync文件同步工具
    logstash grok 内置正则
    logrotate实现Mysql慢日志分割
    Python之unittest测试代码
    Zabbix如何实现批量监控端口状态
    Centos7搭建Confluence破解版
  • 原文地址:https://www.cnblogs.com/jly1/p/9670157.html
Copyright © 2011-2022 走看看