递归的问题!
各位老师,求助第49课递归的问题:>>> def factRecur(n):
... if n == 1:
... return 1
... else:
... return n * factRecur(n-1)
...
>>> factRecur(5)
n * factRecur(n-1) 当 n = 5时:
是不是可以这样理解:
5 * factRecur(5-1) -- 4 * factRecur(4-1) -- 3 * factRecur(3-1) -- 2 * factRecur(2-1)= 5*4*3*2 = 120
那为什么最后返回的不是 1 而是120呢? 本帖最后由 chinajz 于 2023-3-1 21:16 编辑
工作过程:
def factRecur(n):
if n == 1:
return 1
else:
print(n,end=" x ")#n值由大向小递归,直到2
return n * factRecur(n-1)
print ("1 =", factRecur(5)) #把n=1时,返回值1补完整。
运行:
5 x 4 x 3 x 2 x 1 = 120 n*factRecur(n-1)= n乘以factRecur(n-1)的返回值,也就是再调用了一次factRecur()函数,到n=1时factRecur(1)返回1,返回的1归还前面的2*factRecur(1),再逐层归还 运行过程:
5 * factRecur(4)
5 * 4 * factRecur(3)
5 * 4 * 3 * factRecur(2)
5 *4 * 3 * 2 * factRecur(1) 这里的factRecur(1)直接 return 1
最后整个函数返回的结果是120 wanglyndon 发表于 2023-3-1 21:48
运行过程:
5 * factRecur(4)
5 * 4 * factRecur(3)
facResur(4)=?
n*facResur(n-1)是个过程,递归时就是 n*(n-1)
页:
[1]