16 递归

def fun(x):
    if x==1:
        return 1
    print("before %d" % x)
    temp=fun(x-1)+x
    print("after %d" % x)
    return temp

print(fun(5))

执行结果:

before 5
before 4
before 3
before 2
after 2
after 3
after 4
after 5
15

 

第一波:
f(5),5!=1

不在if 中,所以
print("before %d" % 5)
执行 temp=fun(4)+4

执行f(4) ,  加和后面的语句先留着

先打印 before  4 

执行f(3) ,  加和后面的语句先留着

 

先打印 before  3

 

执行f(3) ,  加和后面的语句先留着

 

先打印 before 2

 

执行f(2) ,  加和后面的语句先留着

执行f(2)=f(1)+1

因为 1 ==1,   f{1)  ==1  下面的不执行了

执行f(2)=1+1  打印后面print

 

因为前面的+x  和print都没有执行完,一次返回执行完(栈结束)

 

 

 

 

 

 

posted @ 2020-06-10 16:11  abel2020  阅读(114)  评论(0编辑  收藏  举报