例10 共n个圆盘,a,b,c三根柱子
1 #汉诺塔问题.py 2 def Hanoi(n): #定义n阶汉诺塔问题移动次数函数 3 if n == 1: 4 return 1 5 else: 6 return 2*Hanoi(n-1) + 1 7 def HMove(n,a,b,c): # 定义n阶汉诺塔问题移动方法 8 if n == 1: 9 print(a,'-',b) 10 else: 11 HMove(n-1,a,c,b) 12 print(a,'-',b) 13 HMove(n-1,c,b,a) 14 def HaM(n,a,b,c): 15 print(Hanoi(n),HMove(n,a,b,c))
执行情况:
>>> HaM(4,'a','b','c') a - c a - b c - b a - c b - a b - c a - c a - b c - b c - a b - a c - b a - c a - b c - b 15 None