zoukankan      html  css  js  c++  java
  • 关于汉诺塔的思考,python3

    今天学习python函数时,打算写一个汉诺塔问题的实现,先是在脑海里想象了一下,有1块石头的时候,该怎么移,有2块石头的时候,该怎么移,越想越多,感觉脑袋就

    搅糊了,于是准备直接写代码。其实,之所以想象会把自己搞迷糊,是因为想象的石块会越来越多,移动的步骤也越来越多。而如果使用代码,就可以站到一个比较抽象

    的层次,移动的过程中,最大的问题就是把A柱的最大的一块,移到C柱上,如图所示:

    也就是说,假设有A、B、C三根柱子,有n个石盘,我们第一步要做的就是A的最大的一个石盘移动到C,如何才能做到这一步?那就是通过C把n-1的石盘移动到B上,

    然后把A上最大的一块移到C。剩余的操作类似,把B上的n-1的石盘,通过A移到C上。有了这个思路,代码就很简单了:

    def f_move(n,a,b,c):
        if n==1:
            print('move:',a,'-->',c)
        else:

      #通过C,把A上n-1的石盘移动到B
            f_move(n-1,a,c,b)

      #把A上最大的一块石盘移动到C
            f_move(1,a,b,c)

      #通过A,把B上n-1的石盘移动到C
            f_move(n-1,b,a,c)

    f_move(4,'A','B','C')

    执行结果:

    抽象的力量真的是无穷啊。

  • 相关阅读:
    Python Day14
    Python Day13
    Python Day12
    Python Day11
    Python Day10
    Python Day9
    Python Day8
    Python Day7
    Python Day6
    Python Day5
  • 原文地址:https://www.cnblogs.com/render-inside/p/9182100.html
Copyright © 2011-2022 走看看