In [9]: i = 1
In [10]: def move(n,mfrom,mto):
...: global i
...: print('第%d步将%d号盘子从%s->%s'%(i,n,mfrom,mto))
...: i +=1
...:
In [11]: def hanno(n,A,B,C):
...: if n==1:
...: move(1,A,C) #如果只有一个盘子,直接从A移入C
...: else:
...: hanno(n-1,A,C,B) #将其他盘子看做整体,借助第三方将盘子从A-B
...: move(n,A,C) #现在只有第n个盘子了,移动
...: hanno(n-1,B,A,C) #借助第三方盘子A,将原来移动到B上的盘子从B-C
...:
In [12]: try:
...: n = int(input('请输入一个整数'))
...: print('移动步骤如下:')
...: hanno(n,'A','B','C')
...: except ValueError:
...: print('请输入整数!')
...:
请输入一个整数4
移动步骤如下:
第1步将1号盘子从A->B
第2步将2号盘子从A->C
第3步将1号盘子从B->C
第4步将3号盘子从A->B
第5步将1号盘子从C->A
第6步将2号盘子从C->B
第7步将1号盘子从A->B
第8步将4号盘子从A->C
第9步将1号盘子从B->C
第10步将2号盘子从B->A
第11步将1号盘子从C->A
第12步将3号盘子从B->C
第13步将1号盘子从A->B
第14步将2号盘子从A->C
第15步将1号盘子从B->C
Python-汉诺塔问题理解递归思想
猜你喜欢
转载自blog.csdn.net/weixin_40539952/article/details/104196813
今日推荐
周排行