def a(i):
if i==0:
return
i = i - 1
a(i)
print i
a(2)
1
wjfz 2016-06-08 19:07:45 +08:00
你以为是 1 , 0 ?
|
2
mornlight 2016-06-08 19:11:14 +08:00 1
你的疑惑在哪呢?
里面 a(i) print i 这两句,要先等 a(i)执行完才会 print ,最底层的递归调用先 print 结果,最底层的调用是 a(0),没有输出,再往上一层是 a(1),输出 0 ,再往上是 a(2),输出 1 |
3
SuperFashi 2016-06-08 19:12:33 +08:00 via Android 1
你高中的程序框图是不是没认真学啊……
进入 a(i=2) 判断==(否) i=1 进入 a(i=1) { 判断==(否) i=0 进入 a(i=0) { 判断==(是) 返回 } 打印 i (也就是 0) 返回 } 打印 i (也就是 1) 返回 |
4
mintLeaf OP 多谢大家,明白了
|
5
iamxi 2016-06-08 22:36:04 +08:00
print i 这句在 a(i)之后,所以优先执行 a(i)内的 print i 。
而且 print i 这句在 a(i)之后,不算尾递归。 |