Rekursive looping-Funktion in Python

Ich habe eine Datenbank, die Modelle einer foldering Beziehung zu n Ebenen verschachteln. Für jeden beliebigen Ordner, ich möchte erstellen Sie eine Liste aller untergeordneten Ordner.

Angenommen ich habe eine Funktion namens getChildFolders(), was ist der effizienteste Weg, um Anruf dieser Art rekursive Schleife?

Der folgende code funktioniert für die 4 Ebenen verschachteln, aber ich möchte mehr Flexibilität bei der entweder die Angabe der Tiefe der Rekursion, oder in intelligent beenden die Schleife, wenn es keine Kinder mehr zu Folgen.

folder_ids = []
folder_ids.append(folder.id)
for entry in child_folders:
    folder_ids.append(entry.id)
    child_folders_1 = getChildFolders(entry.id)
    for entry_1 in child_folders_1:
        folder_ids.append(entry_1.id)
        child_folders_2 = getChildFolders(entry_1.id)
        for entry_2 in child_folders_2:
            folder_ids.append(entry_2.id)
            child_folders_3 = getChildFolders(entry_2.id)
            for entry_3 in child_folders_3:
                folder_ids.append(entry_3.id)
Sie sicher, dass Sie alle Unterverzeichnisse, unabhängig davon, auf welcher Ebene der Hierarchie Sie Leben, in eine flache Liste?

InformationsquelleAutor andyashton | 2010-11-09

Schreibe einen Kommentar