You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现n括号生成函数出错,结果存在异常,请求技术修正

修正n括号生成代码的问题

你的代码生成错误括号组合的核心原因是直接修改了递归过程中的build_str变量,导致不同递归分支之间互相干扰。比如在处理左括号分支后,build_str已经添加了左括号,后续处理右括号分支时会基于这个被修改后的字符串继续操作,最终生成错误的括号序列。另外,build_list=[]作为可变默认参数存在潜在隐患(多次调用函数时会复用同一个列表)。

修正后的代码

def gen_paren_pairs(n): 
    def gen_pairs(left_count, right_count, build_str, build_list):
        print(f'left count is:{left_count}, right count is:{right_count}, build string is:{build_str}')
        
        if left_count == 0 and right_count == 0:
            build_list.append(build_str)
            print(build_list)
            return build_list
            
        if left_count > 0:
            # 直接传递拼接后的新字符串,不修改原build_str
            gen_pairs(left_count - 1, right_count, build_str + "(", build_list)
            
        if left_count < right_count:
            # 同理,用新字符串进入递归分支,避免干扰其他逻辑
            gen_pairs(left_count, right_count - 1, build_str + ")", build_list)
        
    build_list = []
    gen_pairs(n, n, "", build_list)
    return build_list

# 测试调用
print(gen_paren_pairs(2))  # 输出 ['(())', '()()']

关键修改点

  • 移除build_list的可变默认参数,改为在外部初始化后传入,避免多次调用函数时列表被重复使用的问题。
  • 递归调用时不再修改原build_str,而是直接传递build_str + "("或build_str + ")",让每个递归分支使用独立的字符串副本,彻底避免分支间的干扰,保证括号组合的正确性。

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:15:38