|  | 
 
 发表于 2017-4-13 23:59:59
|
显示全部楼层 
| 我来给你用print分析下整个递归过程,我自己也才开始学,所以想出了整个办法,应该没问题了,过程非常详细了,整个帖子是2014年的也不指望还有讲奖赏了,为后来的同志们方便理解吧,包程序拷贝执行了对着看,过程就很清楚了 def hanoi(n,a,b,c):
 print('------')
 print(n,a,b,c)
 print('------')
 if n == 1:
 print('aaaaaaaa')
 print(n,a,b,c)
 print(a,'--->',c)
 print('aaaaaaa')
 else:
 print('bbbbbbbbb')
 hanoi(n-1,a,c,b)
 print(n-1,a,c,b)
 print(a,'---->',c)
 print('bbbbbbb')
 hanoi(n-1,b,a,c)
 print(n-1,b,a,c)
 print('ccccccccc')
 n = int (input('请输入汉罗塔的层数:'))
 hanoi(n,'x','y','z')
 
 请输入汉罗塔的层数:3
 ------
 3 x y z
 ------
 bbbbbbbbb
 ------
 2 x z y
 ------
 bbbbbbbbb
 ------
 1 x y z
 ------
 aaaaaaaa
 1 x y z
 x ---> z
 aaaaaaa
 1 x y z
 x ----> y
 bbbbbbb
 ------
 1 z x y
 ------
 aaaaaaaa
 1 z x y
 z ---> y
 aaaaaaa
 1 z x y
 ccccccccc
 2 x z y
 x ----> z
 bbbbbbb
 ------
 2 y x z
 ------
 bbbbbbbbb
 ------
 1 y z x
 ------
 aaaaaaaa
 1 y z x
 y ---> x
 aaaaaaa
 1 y z x
 y ----> z
 bbbbbbb
 ------
 1 x y z
 ------
 aaaaaaaa
 1 x y z
 x ---> z
 aaaaaaa
 1 x y z
 ccccccccc
 2 y x z
 ccccccccc
 
 | 
 |