python中的汉诺塔递归算法


python中的汉诺塔递归算法
第一篇小博客,尽管百度上都有,我还是很认真写的。

什么是汉诺塔

汉诺塔是将所有盘子(n个)从A柱挪至C柱,中间可以借用B柱,但是最终盘子都得在C柱上,而且需要大盘子在下,小盘子在上

对应的python代码

def move(n, a, b, c):
        if n ==1:
             print (a, '-->', c)
             return
        move(n-1, a, c, b)
        print (a, '-->', c)
        move(n-1, b, a, c)
    move(n, 'A', 'B', 'C')

代码第一行新建一个函数move(n,a,b,c),n代表一共多少个盘子,a、b、c分别代表柱子。下面的if函数说的是,如果就一个盘子,直接把盘子从a移动到c,然后return(返回);第五行是将n-1个盘子从a经过c移动到b;第六行将a柱的最大盘移动到c柱;第七行是将b柱的盘子经过a移动到c。
递归主要是5、6、7这三行,汉诺塔这个就是按照盘子的多少来不断循环的一个过程。注意不要被参数变化弄糊涂了。

盘子为1、2、3时的结果

盘子为1个 :

A --> C

盘子为2个 :

A --> B
A --> C
B --> C

盘子为3个:

A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C
文章目录
  1. 1. 什么是汉诺塔
  2. 2. 对应的python代码
  3. 3. 盘子为1、2、3时的结果
,