def fun(n2):
if n2 >0:
fun(n2-1)
# print(n2)
print(n2)
n = 3
fun(n)
#print(n)
结果不应该是只有一个0吗,冒出来三个结果。而且第四行注释掉的那句输出语句在每次执行递归之后都会被执行一次,这是为什么呢,不应该是返回函数本身不执行这句代码吗
def fun(n2):
if n2 >0:
fun(n2-1)
# print(n2)
print(n2)
n = 3
fun(n)
#print(n)
结果不应该是只有一个0吗,冒出来三个结果。而且第四行注释掉的那句输出语句在每次执行递归之后都会被执行一次,这是为什么呢,不应该是返回函数本身不执行这句代码吗
这个程序是递归输出从0到n
递归是先递进再归,递的时候不会输出,归的时候就输出了,所以执行递归之后会被执行
第一次调用fun(3) : 3>0,递归调用fun(2):2>0,递归调用fun(1);1>0,递归调用f(0),0>0不满足,递归结束,依次返回,先执行fun(0)里面的输出,再执行fun(1)里面的输出;再执行fun(2)里面的输出,再执行fun(3)的输出