if n==1: print(a,'-->',c) else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c)
简单地说下思路,移动n个A到C,可拆分为3个步骤: 1、从A移动n-1个到B, 2、从A移动最下方到C, 3、从B移动n-1个到C。 正对应以上的3句代码,那么move(3,a,b,c)可拆分为:
#move(3,a,b,c) move(2,a,c,b) move(1,a,b,c) move(2,b,a,c)
而move(2,a,c,b)又可拆分为:
#move(2,a,c,b) move(1,a,b,c) move(1,a,c,b) move(1,c,a,b)
依此类推...
分析的很透彻
以前看careercup的时候写过汉诺塔,结果这次死活想不起来解题思路了。多谢分析,很清晰!
Sign in to make a reply
我是救兵我来找猴子
简单地说下思路,移动n个A到C,可拆分为3个步骤: 1、从A移动n-1个到B, 2、从A移动最下方到C, 3、从B移动n-1个到C。 正对应以上的3句代码,那么move(3,a,b,c)可拆分为:
而move(2,a,c,b)又可拆分为:
依此类推...