【发布时间】:2012-02-15 20:05:05
【问题描述】:
我正在研究python中的河内塔递归实现。在我的 prgram 中,我在不同的地方打印,以便更好地了解它,比如
def hanoi(n, src, inm, dest):
print "n=",n,"src=",src,"inm=",inm,"dest=",dest
if n == 0:
return
hanoi(n-1, src, dest, inm)
print src, '->', dest
print n
hanoi(n-1, inm, src, dest)
hanoi(2,'A','B','C')
答案打印如下:
n= 2 src= A inm= B dest= C
n= 1 src= A inm= C dest= B
n= 0 src= A inm= B dest= C
A -> B
1
n= 0 src= C inm= A dest= B
A -> C
2
n= 1 src= B inm= A dest= C
n= 0 src= B inm= C dest= A
B -> C
1
n= 0 src= A inm= B dest= C
我能理解到
1
n= 0 src= C inm= A dest= B
我无法理解在此之后如何打印 A -> C。在 n= 0 src= A inm= B dest= C 的调用之后,我知道函数将被返回。那里的活动函数是n = 1 src = A inm = C dest = B。那会发生什么?
请解释一下痕迹
【问题讨论】:
标签: python function recursion callstack