def a(i):
  if i==0:
    return
   i = i - 1
  a(i)
  print i
a(2)
|  |      1wjfz      2016-06-08 19:07:45 +08:00 你以为是 1 , 0 ? | 
|  |      2mornlight      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 | 
|      3SuperFashi      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) 返回 | 
|      4mintLeaf OP 多谢大家,明白了 | 
|      5iamxi      2016-06-08 22:36:04 +08:00 print i 这句在 a(i)之后,所以优先执行 a(i)内的 print i 。 而且 print i 这句在 a(i)之后,不算尾递归。 |