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

Posted 仰望星空-脚踏实地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于python数据结构_递归_汉诺塔问题的主要内容,如果未能解决你的问题,请参考以下文章

递归_汉诺塔问题

python汉诺塔非递归

递归_汉诺塔问题

编程:递归编程解决汉诺塔问题(用java实现)

Java编程用栈来求解汉诺塔问题的代码实例(非递归)_java - JAVA

Python汉诺塔问题