谁能理清这里头的逻辑关系

sweetswing 2019-09-06 04:34:40
what is the output of this code?

def fun(a, p=0):
if(p == len(a)):
return 0
z=1 if not a[p] else 0
return z + fun(a,p+1)

a = [1,0,1,1,0,1,0]
print(fun(a))


A 4
B Error
C 7
D 3


正确答案是3

谁告诉我,这三儿从 哪来的?

...全文
174 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小黑LLB 2019-09-06
  • 打赏
  • 举报
回复
递归确实有点绕脑袋,用图还是能很好的解决问题的。 希望没有打错。
kuangbao9 2019-09-06
  • 打赏
  • 举报
回复
if not a[p] else 0从这句可知列表 a 中为“1”的取0,为“0”的取1
而a中有三个“0”,但是第三个"0"是a的最后一个元素,故递归函数fun最后一次的“0”返回值为0,再加上前两个零返回值为1,
以及z的值为1,可知最后答案为3

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧