Python-汉诺塔问题理解递归思想

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
发布了101 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_40539952/article/details/104196813