簡體   English   中英

python使用遞歸的所有可能的排列

[英]python all possible permutation using recursion

如何實現遞歸方式來編寫字符串的排列? 例如,如果輸入為'abc' ,我希望結果為:

[a', 'b', 'c', 'd', 'e', 'aa', 'ab', 'ac', 'ad', 'ae', 'ba',
 'bb','bc', 'bd', 'be', 'ca', 'cb', 'cc', 'cd', 'ce', 'da', 'db',
 'dc','dd', 'de', 'ea', 'eb', 'ec', 'ed', 'ee', 'aaa', 'aab', 'aac',
 'aad','aae', 'aba', 'abb', 'abc', 'abd', 'abe', 'aca', 'acb',
 'acc'....]

另外,如果結果的字符串也包含在另一個列表中,則返回該字符串。 例如'a''b'[a,aaah,aahed,aahing,aahs,'b'] ,我想顯示'a''b'

編輯

我嘗試使用for循環,但出現MemoryError

def perm(l,last,result)
    if len(result[-1]==len(l)):
        return result
    else:
        for i in l:
            for u in last:
                last.append(u+i)
         result.extend(last)
    perm(l,last,result)
    return result

perm(['a','b','c'],[''],[''])

生成當前長度的所有字符串,然后遞歸查找更長的字符串。

def perm(chars, prefix):
    result = []
    if len(prefix) < len(chars):
        for char in chars:
            result.append(prefix + char)
        for char in chars:
            result.extend(perm(chars, prefix + char))
    return result

print perm(["a", "b", "c"], "")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM