这个递归的返回值为什么是 0,1(代码格式已修改)

2016-06-08 19:05:48 +08:00
 mintLeaf

def a(i):
  if i==0:
    return
   i = i - 1
  a(i)
  print i

a(2)

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/284456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX