|
发表于 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
|
|