使用递归生成字符串的所有子集

时间:2014-06-20 00:33:45

标签: python recursion subset

string = 'abc'。所述字符串的所有子集都是:[a b c ab abc ac bc '(empty string)'] 我需要使用递归函数生成所有这些子集,但我无法弄清楚如何。

2 个答案:

答案 0 :(得分:0)

对于每个重复使用的char而不使用

s = 'abc'

def recur(s, prefix, out):
    if len(s) > 0:
        recur(s[1:], prefix+s[0], out)
        recur(s[1:], prefix, out)
        out.append(prefix+s[0])
    return out

print recur(s, '', [''])

输出

['', 'abc', 'ac', 'ab', 'bc', 'c', 'b', 'a']

答案 1 :(得分:0)

只是为了踢,你可以把它写成一行lambda。

lambda s: { s[j:(j+i)] for i in range(len(s)+1) for j in range(len(s)-i+1) }