我正在开发一个相当基本的功能,但发现很难弄清楚为什么得到我的输出。

def mystery(n):
    print(n)
    if n < 4:
        mystery(n + 1)
    print(n)

mystery(1)


这是我的输出:

1
2
3
4
4
3
2
1


我想我对输出的第一部分很清楚,n

最佳答案

每次mystery(n + 1)完成时,将调用下一个print(n)

也许以下代码更清晰:

def mystery(n):
    print('\t' * n + 'enter mystery ' + str(n))
    if n < 4:
        print('\t' * n + 'before mystery(n+1) ' + str(n))
        mystery(n + 1)
    print('\t' * n + 'after mystery ' + str(n))

mystery(1)


输出:

enter mystery 1
before mystery(n+1) 1
    enter mystery 2
    before mystery(n+1) 2
        enter mystery 3
        before mystery(n+1) 3
            enter mystery 4
            after mystery 4
        after mystery 3
    after mystery 2
after mystery 1

关于python - 递归函数(基本),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55207320/

10-12 21:13