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