我是python编程的新手。我为递归编写了一个小脚本,帮助我了解递归循环中发生的事情。但是在递归结束后,我不明白脚本的最后一部分以及它在做什么。这是我的脚本。
def test(n, m, p, k):
print(n, m, p, k, 'This is the value coming in.')
if n > 0:
print(n, m, p, k, 'This is before recursion.')
test(n-1, p, k, m)
print(n, m, p, k, 'This is when n = 1.' )
这是我运行测试(5、10、20、30(>>>结果
5 10 20 30 This is the value coming in.
5 10 20 30 This is before recursion.
4 20 30 10 This is the value coming in.
4 20 30 10 This is before recursion.
3 30 10 20 This is the value coming in.
3 30 10 20 This is before recursion.
2 10 20 30 This is the value coming in.
2 10 20 30 This is before recursion.
1 20 30 10 This is the value coming in.
1 20 30 10 This is before recursion.
0 30 10 20 This is the value coming in.
1 20 30 10 This is when n = 1.
2 10 20 30 This is when n = 1.
3 30 10 20 This is when n = 1.
4 20 30 10 This is when n = 1.
5 10 20 30 This is when n = 1.
为什么最后 5 个打印函数从 n=1 上升到 n=5?
那是所有调用都解开包装的时候。 n 是降序的,所以当它解开包装时,它将以相反的顺序排列(第一次调用是最后一次解析(。您可以通过详细查看最后几行的参数来查看这一点。