递归
单个递归的说明
1、递归函数中,先进行入栈操作,当不再满足条件的时候开始出栈,出栈的时候才弹出值。
2、在不断入栈的过程中,是会执行该函数位置之前的代码操作的;出栈的时候执行其后的代码操作(return n*fun(n-1)也应是出栈的时候运算的)
3、例如,如下代码:
m=0
def listsum(numList):
global m
if len(numList) == 1:
return numList [0]
else:
m+=1
print("m:{}".format(m))
return numList[0] + listsum(numList[1:])
a=listsum([3,2,4,2,3])
print("return: {}".format(a))
当满足条件时通过第9行然后递归进入第2行,在第九行之前的操作都是执行的,例如第7行,当递归进入最深层的时候m值已经等于4。但是递归函数语句之后的语句没有执行,只有在出栈的时候才执行其后的语句。
4、递归的图示