Python 递归在结束之后在这里做什么



我是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 是降序的,所以当它解开包装时,它将以相反的顺序排列(第一次调用是最后一次解析(。您可以通过详细查看最后几行的参数来查看这一点。

相关内容

最新更新