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)

上一篇:TMsgThread, TCommThread -- 在delphi线程中实现消息循环(105篇博客,好多研究消息的文章)


下一篇:[转帖]VIM常用快捷键