python递归例子1:汉诺塔问题。
汉诺塔(Hanoi Tower),三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘
目标:把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。
规则1:在小圆盘上都不能放大圆盘:
规则2:且在三根柱子之间一次只能移动一个圆盘

以两个盘子为例:
n=2时,步骤:
1,把小圆盘从a移动到b
2,把大圆盘从a移动到c
3,把小圆盘从b移动到c
n个盘子时,仍然和两个盘子的情况类似,大圆盘是最底下的第n个圆盘,小圆盘可以看做是除了大圆盘之外的小圆盘。
1,把n-1圆盘从a 经过c 移动到b
2,把第n个圆盘从a移动到c
3,把n-1个小圆盘从b 经过a 移动到c
从a柱子移动多个圆盘到b柱子时,必然要通过c柱子来实现。
代码实现:
def hanoi(n, a, b, c): if n > 0: hanoi(n-1, a, c, b) print('从 %s 移动到 %s' %(a, c)) hanoi(n - 1, b, a, c)
n为圆盘个数,‘a’,‘b’,‘c’ 分别为三根柱子。

浙公网安备 33010602011771号