码迷,mamicode.com
首页 > 编程语言 > 详细

python数据结构_递归_汉诺塔问题

时间:2018-09-18 19:11:23      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:python   代码   def   解决   move   结构   原理   数学   思想   

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

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

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

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

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

递归 说白了了就是数学归纳法, 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)

python数据结构_递归_汉诺塔问题

标签:python   代码   def   解决   move   结构   原理   数学   思想   

原文地址:https://www.cnblogs.com/jly1/p/9670157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!