def move(n, a, b, c):
if 1==n:
print('Hit stop key',n,a,b,c)
print(a, '-in if>', c)
else:
print('n1',n,a,b,c)
move(n-1, a, c ,b)
print('n2',n,a,b,c)
print(a, '--in else>', c)
move(n-1, b, a ,c)
move(3, 'A', 'B', 'C')
结果:
n1 3 A B C
n1 2 A C B
Hit stop key 1 A B C
A -in if> C
n2 2 A C B
A --in else> B
Hit stop key 1 C A B
C -in if> B
n2 3 A B C
A --in else> C
n1 2 B A C
Hit stop key 1 B C A
B -in if> A
n2 2 B A C
B --in else> C
Hit stop key 1 A B C
A -in if> C
难阿难难难
把参数全打出来,终于看清楚程序怎么跑的了。。move(n-1,a,c,b)其实就是两个参数位置的对换。问题是还不知道你们是根据什么思路想出来的。。
def move(n, a, b, c): if 1==n: print('Hit stop key',n,a,b,c) print(a, '-in if>', c) else: print('n1',n,a,b,c) move(n-1, a, c ,b) print('n2',n,a,b,c) print(a, '--in else>', c) move(n-1, b, a ,c) move(3, 'A', 'B', 'C')
结果:
n1 3 A B C n1 2 A C B Hit stop key 1 A B C A -in if> C n2 2 A C B A --in else> B Hit stop key 1 C A B C -in if> B n2 3 A B C A --in else> C n1 2 B A C Hit stop key 1 B C A B -in if> A n2 2 B A C B --in else> C Hit stop key 1 A B C A -in if> C