分析:
A:n个圆盘
B:0个圆盘
C:0个圆盘
目的:将A上的圆盘全部转移到C上,函数原型为Hanoi(n,a,b,c)
- 将A上层的n-1个转移B上,语句为:Hanoi(n-1,a,c,b)
- 把A最后一个转移到C上, 语句为:print(a+"-->"+c)
- 将B上的n-1转移到C上,结束。语句为:Hanoi(n-1,b,a,c)
另外当n=1时,为递归结束的条件,直接将A移动到C即可。
故函数为:
# -*- coding: utf-8 -*-
# 汉诺塔
def hanoi(n, a, b, c):
if n == 1:
print(a+'- ->'+c)
else:
hanoi(n-1, a, c, b)
print(a+'- ->'+c)
hanoi(n-1, b, a, c)