看不懂以下代码是如何运作的,求直观、明了、清晰的解释。
def move(n, a, b, c):
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')
def move(n, a, b, c):
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-03-04
先理解两种情况,一是只有一个积木,二是有两个积木。
一个积木时,print a,'-->',c 这个比较好理解,直接把a上的积木移到c上。
这时,前四行的代码可以理解了,剩下三行的代码,可以理解为两块积木的情况。
两块积木时,先把a移到b,再把a移到c,最后把b移到c。一定要先理解规则。
此时,根据n==1时的定义,move(n, a, b, c)中,a移到c,也就是第二个元素移动到第四个元素。
所以a移动到b,表达为move(n - 1 , a , c , b),
然后,a移动到c,表达为move(1 , a , b, c),也就是print a , '-->' , c,
最后,b移动到c,表达为move(n - 1 , b , a , c)
大于两块积木的,把除了最底下的积木,认为是完整的第二块积木就可以了,这就是递归函数。
举报