我通过查看一些网站和我的知识编写了一个下面的代码,而在输出方面,我几乎没有查询:
factorial (3)
会将参数n=3
传递给函数,其中n
值不等于零,它应该到达程序的else
部分并执行我的代码。在其他部分
我很困惑,为什么打印1
作为第一个输出,然后是其他值?
def factorial(n):
if n == 0:
return 1
else:
recurse = factorial(n-1)
result = n * recurse
print result
return result
输出:
>>> factorial(3)
1
2
6
6
答案 0 :(得分:0)
else
分支首先调用递归函数 ;这些递归调用也使用print
。
factorial(3)
n = 3 -> else
recurse = factorial(n - 1)
n = 2 -> else
recurse = factorial(n - 1)
n = 1 -> else
recurse = factorial(n - 1)
n = 0 -> if
return 1
result = n * recurse -> 1 * 1
print 1
return 1
result = n * recurse -> 2 * 1
print 2
return 2
result = n * recurse -> 3 * 2
print 6
return 6
请注意print
来电的顺序;一旦你点击n == 0
,递归函数就会开始返回,你会得到一个print
语句,然后是另一个return
和另一个print
等。