汉诺塔

作者: 小赤焰 | 来源:发表于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