python的汉诺塔问题

汉诺塔问题不管在任何编程语言里都是经典问题,是采用递归算法的经典案例,该问题可以抽象如下:

一    3根圆柱A,B,C,其中A上面串了n个圆盘

二    这些圆盘从上到下是按从小到大顺序排列的,大的圆盘任何时刻不得位于小的圆盘上面

三    每次移动一个圆盘,最终实现将所有圆盘移动到C上

 

    利用Python语言接近自然语言的特性,开发者可以更容易的将递归算法翻译成程序语句,需要的代码量很小。汉诺塔问题的解决步骤用语言描述很简单,仅三步:

A,B,C三个圆柱,分别为初始位,过渡位,目标位,设A柱为初始位,C位为最终目标位

(1)将最上面的n-1个圆盘从初始位移动到过渡位

(2)将初始位的最底下的一个圆盘移动到目标位

(3)将过渡位的n-1个圆盘移动到目标位

对于递归算法中的嵌套函数f(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)   

 

posted @ 2020-06-18 14:06  林晓婷  阅读(225)  评论(0)    收藏  举报