【问题标题】:Loop Flow when using recursion in python在python中使用递归时的循环流
【发布时间】:2018-10-02 00:40:24
【问题描述】:

当使用递归时,我担心循环流在 Python 中是如何工作的(不管函数,只是了解循环流)

def factorial(n):
    print("first line")
    if n == 1 or n == 0:
        return 1

    result = n * factorial(n-1)
    print('line after result')
    print('current result is ' + str(result) )
    print('before return result')
    return result

在我的示例中,我使用了factorial(3),我得到了这样的结果:

first line
first line
first line
line after result
current result is 2
before return result
line after result
current result is 6
before return result
6

为什么我在计算/返回结果后得到 line after result 三次。我不应该在结果后只得到一次吗?循环返回多少次结果?我不明白递归循环流在 python 中是如何工作的。请帮忙。谢谢

【问题讨论】:

    标签: python recursion


    【解决方案1】:

    你有line after result 2 次(不是 3 次)。在递归调用期间为每次返回打印此行。

    1. 您致电factorial(3)。 Python 打印 "first line" 并运行函数 factorial(2)
    2. Python 打印 "first line" 并调用 factorial(1)
    3. Python 打印"first line" 并返回1
    4. 从第 3 步获取结果并打印 line after result;
    5. 从第 2 步获取结果并打印 line after result;
    6. 从步骤 1 中获取结果。

    【讨论】:

      【解决方案2】:

      在 n==1 return 语句的情况下使用 print 语句,那么 print after 将仅在 n = 3 和 n = 2 时打印(在您的示例中)。对于 n = 1,该语句将不会打印出来的。

      【讨论】:

        猜你喜欢
        • 2021-06-17
        • 2016-07-18
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 2012-12-25
        • 2018-08-12
        相关资源
        最近更新 更多