【蓝桥杯】非空子集 两种递归求法

这篇博客探讨了两种递归方法:逐步构造(自底向上)和深度优先搜索(DFS,自顶向下)。逐步构造通过简单的组合构建复杂解,而DFS则是从整体出发,分解子问题。文章通过Python代码示例展示了如何使用这两种方法解决字符串组合问题,分别应用于不同的思考方式。
摘要由CSDN通过智能技术生成

两种递归
形式看起来差不多,不过是思考的方式不一样。

逐步构造,是 自底向上考虑。 这种感觉更适合 从简单到 复杂的推导

list1 = [1,2,3,4,5,6]
all_set = set()

def getSet(index):
    if index ==-1:
        set1 =set()
        set1.add("")
        return set1 

    setLast = getSet(index-1)
    setNew = set()
    for i in setLast:
        setNew.add(i+str(list1[index]))
        setNew.add(i)
        
    return setNew
    
print(list1)

dfs是自顶向下思考。
给我一个 子集,我能对他做什么 然后提交给下一层。

list1 = [1,2,3,4,5,6]
all_set = set()

def dfs(str1,index):
    if index == len(list1):
        all_list.append(str1)
        return 

    dfs(str1+str(list1[index]),index+1)
    dfs(str1,index+1)

print(list1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值