首页 > 解决方案 > 在python中使用递归时的循环流

问题描述

当使用递归时,我担心循环流在 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

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

标签: pythonrecursion

解决方案


你有line after result2 次(不是 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 中获取结果。

推荐阅读