汉诺塔的递归解法

遇到这题,就觉得我的理解能力和表达能力不行,用了好长时间把这题弄懂,然而又不知道怎么用语言表述。。。

要先找到 n =1的是基例,当只有一块时,直接从a移动到c就完成了
然后再解决n的问题,都可以看成:先把 a柱(n-1)个盘子,先从a 移动到b, 再将a最后一个盘子从a 移动到c,最后将n-1个盘子从b移动到c

永远记着:函数参数s,m,e所代表的意思是位置,分别代表起点,中点,终点,盘子移动只在s,e移动,如果从a柱移动到b柱子,b柱就是终点,参数就改为(s,e,m),从b柱移动到c柱,b柱就为起点,c柱为终点(m,s,e)

def hanoi(n,s,m,e)	
	if n == 1:
		print(s,'-->',e)	
	else:
		hanoi(n-1,s,e,m)	
		print(s,'-->',e)
		return hanoi(n-1,m,s,e)
print(hanoi(3,'A','B','C')

你可能感兴趣的:(学python的路上)