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都没有执行完,一次返回执行完(栈结束)