我担心使用递归时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中工作。请帮忙。谢谢
答案 0 :(得分:1)
您有line after result
次2次(而非3次)。在递归调用期间,每次返回时都会打印此行。
factorial(3)
。 Python打印"first line"
并运行函数factorial(2)
。"first line"
并调用factorial(1)
。"first line"
并返回1
; line after result
; line after result
; 答案 1 :(得分:0)
在n == 1 return语句的情况下使用print语句,则仅在n = 3和n = 2的情况下(在您的示例中)打印after语句。对于n = 1,则不会打印