#经典汉诺塔问题,数字越小,代表越是顶层的圈圈 count=0 def hanoi(n,src,dst,mid): global count if n==1: print('{}:{}->{}'.format(1,src,dst)) count+=1 else: hanoi(n-1,src,mid,dst)#想象成上面(n-1)个是一个整体,比下面的第n个要小,这样就简化成2个圈圈的问题了 #把上面1个(也就是n-1个)从源移到中间过渡下 print('{}:{}->{}'.format(n,src,dst))#把下面1个,(也就是第n个,最底层的那个最大的)从源移动到目的地 count+=1#每移动1下计数1次 hanoi(n-1,mid,dst,src)#再把刚才从源移到中间过渡的那个整体(也就是上面的n-1个),从中间移动到目的地 hanoi(3,'A','C','B')
汉诺塔问题是递归思路的代表题目。好好研究这段代码,就都想明白了