题目背景:A柱上有n个碟子“从小到大“的尺寸叠在一起的碟子,B、C柱子上为空,要把A柱子上的碟子移到C柱,并保证在移动过程中和最终结果,每个柱子上的碟子尺寸从上到下是从小到大的。
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
规律:1、将A柱上的前n-1个碟子通过C柱移到B柱,(因为只有最大的碟子放在C柱后,前n-1个碟子才能移到C柱),所以我们需要把前n-1个碟子移到B柱。(A--->C之前的操作)
2、将第n个碟子移到C柱。(A--->C)
3、将B柱上的n-1个碟子又通过A柱移到C柱,这时的B相当于之前的A柱,A柱相当于之前的B柱,C柱上都是比较大的碟子,所以A、B柱的碟子向其移时是没有影响的,相当于又回到了第一步。(A--->C之后的操作)
def hannuota(n,A,B,C):
if n >= 1:
hannuota(n-1,A,C,B)
print(A + "--->" + C)
hannuota(n-1,B,A,C)
hannuota(3,"A","B","C")