defhannuotower(num,a,b,c):# 参数 num代表的是盘子 a b c分别代表的是A柱,B柱,C柱# 第一个条件 基线条件# 如果只有一个盘子 A -- Cif num ==1:print('第1个盘子从',a,'->',c)else:# 第二个条件 递归条件# num >= 2的情况# 2.1 先把最上面的盘子 A-- B 借助C柱
hannuotower(num-1,a,c,b)# 2.2 把最下面的盘子 A--Cprint('第',num,'个盘从',a,'->',c)# 2.3 把B柱上的盘子 B--C
hannuotower(num-1,b,a,c)
hannuotower(3,'A','B','C')
结果
第1个盘子从 A -> C
第 2 个盘从 A -> B
第1个盘子从 C -> B
第 3 个盘从 A -> C
第1个盘子从 B -> A
第 2 个盘从 B -> C
第1个盘子从 A -> C