为了账号安全,请及时绑定邮箱和手机立即绑定

为什么python不返回引用?

为什么python不返回引用?

千巷猫影 2022-08-25 14:01:33
我有一个关于Python如何返回值的问题。下面是我简单的python代码练习递归函数。def brackets(ans, n, cur, open, close):    if len(cur) == n*2:        ans.append(cur)   # <---l.1        return ans        # <---l.2       if open < n:        brackets(ans, n,cur+"(",open+1,close)    if open > close:        brackets(ans, n,cur+")",open,close+1)ans = []ret = brackets(ans, 2, "", 0,0)  # <---l.3print(ans)print(ret)===== return:['(())', '()()']None我想我修改了l.1行上的列表对象并返回它,并且在行l.2上,我传递了第l.3行上的引用。但是当我打印值和时,不包含与 相同的值。ansansansretretans当然,我只是打印出来以获得正确答案,但我期望Python初始化变量并分配返回引用到行l.3。ansretbracketsret我对python如何通过函数传递引用感到困惑。请让我知道相关文件或答案。
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

如果的长度不是 ,则该函数不返回任何值。说实话,要知道它应该返回什么并不容易,因为你还没有发布一些预期的结果。也就是说,这里有一些选择:curn*2brackets()


始终返回递归调用的值:


 if open < n:

     return brackets(ans, n,cur+"(",open+1,close)


 if open > close:

     return brackets(ans, n,cur+")",open,close+1)

在这种情况下,这将是最终结果:


 ['(())']

 ['(())']


在函数末尾返回:ans


 return ans

这将是输出:


 ['(())', '()()']

 ['(())', '()()']


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信