递归生成表达式

题目描述:

输出n对“()”可能组成的所有合理组合
 

输入n=1n=2n=3
输出

['()']

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

思路:

由空集合递归生成最后的合乎规定的括号组合问题;

递归调用,最后生成的组合添加到列表中,递归结束;

“(”与“)”成对出现,所以“)”出现的次数<="("出现的次数;

代码


n=3
result=[]
def fun(count,n,string):
    l,r=count
    if r==n:
        result.append(string)
        return True
    else:
        if l>r:
            if l<n:
                fun([l+1,r],n,string+'(')
            fun([l, r + 1], n, string + ')')
        elif l==r:
            fun([l + 1, r], n, string + '(')
fun([0,0],n,'')
print(result)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值