Saya mencoba membuat fungsi permutasi rekursif dengan python tetapi hanya berfungsi untuk input [0,1] dan [0]

Tolong bantu

def permutationHelper(lst):
    if len(lst)==0:
        return []
    elif len(lst)==1:
        return lst
    per=[]
    for i in range(len(lst)):
        perAtI = permutationHelper(lst[:i]) + permutationHelper(lst[i+1:])

        perAtI.insert(0,i)
        per.append(perAtI)
    return (per)

Setelah membaca komentar Anda, saya membuat penyesuaian ini tetapi masih belum berhasil

def permutationHelper(lst):
    if len(lst)==0:
        return []
    elif len(lst)==1:
        return lst
    per=[]
    for i in range(len(lst)):
        perAtI = permutationHelper(lst[:i]) + permutationHelper(lst[i+1:])
        for j in perAtI:
            if type(j)==list:
                j.insert(0,lst[i])
                per.append(perAtI)
            else:
                perAtI.insert(0,lst[i])
                per.append(perAtI)
     return(per)
0
A.yeshaw 5 Agustus 2019, 08:41

1 menjawab

Jawaban Terbaik

Setelah memeriksa beberapa kali saya mengoreksi kode menjadi apa yang diposting di bawah ini dan itu berfungsi dengan baik

def permutationHelper(lst):
    if len(lst)==0:
        return []
    elif len(lst)==1:
        return [lst] # this should have been a list within a list
    per=[]
    for i in range(len(lst)):
        perAtI = permutationHelper(lst[:i]+lst[i+1:]) #should have been concatenated before passing into the function
        for j in perAtI:
            if type(j)==list:
                j.insert(0,lst[i])
                per.append(perAtI)
            else:
                perAtI.insert(0,lst[i])
                per.append(perAtI)
     return(per)
0
A.yeshaw 7 Agustus 2019, 04:45