为什么第一行是 A --> B?
if n ==1:
print a, '-->', c
return
move(n-1, a, c, b)
print a, '-->', c
move(n-1, b, a, c)
move(4, 'A', 'B', 'C')
2020-04-17
其实很好理解,当n不等于1的时候,move(n-1, a, c, b),这个语句会无限执行。
以n=2为例,当执行语句move(1, a, c, b),会出现程序的一个输出语句即print a, '-->', c。
print 里的a,c代表的是move(1, 'A', 'C', 'B')里的a和c,这里的a,c代表的是堆栈的物理位置,
对应输出就是A-->B.
由于n=1,故这部分语句
if n ==1:
print a, '-->', c
return
输出结束。
执行完成之后继续执行下列语句
print a, '-->', c
注意,这里是以n=2为输入,对应还是move(2, A, B, C),故输出a,c对应就是A-->C.
最后一个语句move(n-1, b, a, c),n=2,这时候对应move(1,'B', 'A', 'C'),再走if语句,
if n ==1:
print a, '-->', c
return
输出a,c对应就是B-->C。
return结束。
不知道有没有错误的地方。有错望纠正。
n=2的完整输出:
A --> B A --> C B --> C
举报