Вот другой подход, использующий только рекурсию.findSeqRecPerChar
находит все возможные комбинации для определенного символа в списке, а findSeqRec
находит все возможные комбинации для каждого символа:
seq = ['a', 'b']
n = 2
def findSeqRecPerChar(seq,n,elem,index):
if index == n:
return []
else:
return [elem+seq[index]] + findSeqRecPerChar(seq,n,elem,index+1)
def findSeqRec(seq,n,index,l):
if index == n-1:
return l + []
else:
l.extend(findSeqRecPerChar(seq,n,seq[index-1],0))
return findSeqRec(seq,n,index+1,l)
result = findSeqRec(seq,n,-1,[])
print(result)
Вывод:
['aa', 'ab', 'ba', 'bb']