汉诺塔

作者: 小赤焰 | 来源:发表于2018-04-02 10:57 被阅读0次

开始

在廖大神的博客上学习python。看到递归函数这块,大神给了一个课后作业,写出汉诺塔的算法实现。

过程

以前学c学过递归,汉诺塔也略有所闻。可是真要我写,实在不会,度娘教了我老半天,还是未能理解其中的真谛。都想放弃了,无意间看到 知乎上的回答 瞬间算法领悟真谛。

总结

其中的点在于 不要去跟踪每一步是怎么移动的,要用宏观的角度去考虑问题。要达到目的:

  • 就要将n-1个盘子移动到不碍事(缓冲区)的地方。
  • 再将剩下的最后一个盘子移动到目标地点。
  • 再将剩下的n-1个盘子移动到目标地点

这就是汉诺塔问题的实现方法。永远只有三步。

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)

相关文章

网友评论

      本文标题:汉诺塔

      本文链接:https://www.haomeiwen.com/subject/jtuthftx.html