Zunächst möchte ich die rekursive Funktion zusammenfassen, da es viele Möglichkeiten gibt, die Wiederholung von Baumstrukturen zu verwenden, z. B. eine Baumquelle, einen Entscheidungsbaumalgorithmus usw. Die Funktion, die sich selbst ausführt, wird als rekursive Funktion bezeichnet, und der Teil der rekursiven Funktion, der sich selbst ausführt, wird als rekursiver Aufruf bezeichnet.
recursive.ipynb
def recursive_f(depth):
print("depth: "+ str(depth))
if depth == 10:
return
recursive_f(depth + 1)
if __name__=="__main__":
recursive_f(0)
Das Ausführungsergebnis ist wie folgt. depth: 0 depth: 1 depth: 2 depth: 3 depth: 4 depth: 5 depth: 6 depth: 7 depth: 8 depth: 9 depth: 10
Da es sich selbst aufruft, wird es unbegrenzt weiter ausgeführt, es sei denn, irgendwo wird eine bedingte Verzweigung vorgenommen.
Erstellen Sie bei der Implementierung mit einem Entscheidungsbaum eine Knotenklasse, haben Sie eine Elementvariable zum Speichern Ihres eigenen untergeordneten Knotens und erstellen Sie eine Elementfunktion, die Sie unterteilt und einen untergeordneten Knoten in eine rekursive Funktion erstellt. Eine Mitgliedsvariable, die zu einem eigenen untergeordneten Knoten wird, hat eine Mitgliedsvariable, die zu einem Enkelknoten wird, und eine Mitgliedsvariable, die zu einem Urenkelknoten wird, und ein untergeordneter Knoten wird für immer wie generiert. Der Einfachheit halber ist die Figur bei einer Tiefe von 3 gezeigt.
Wenn Sie dies codieren
recursive_tree.ipynb
class Node:
def __init__(self, max_depth):
self.left = None
self.right = None
self.max_depth = max_depth
self.depth = None
def split_node(self, depth):
self.depth = depth
print("depth: " + str(self.depth))
if self.depth == self.max_depth:
return
self.left = Node(self.max_depth)
self.right = Node(self.max_depth)
self.left.split_node(depth + 1) # recursive call
self.right.split_node(depth + 1) # recursive call
if __name__ == "__main__":
max_depth = 3
initial_depth = 0
tree = Node(max_depth)
tree.split_node(initial_depth)
Ausführungsergebnis depth: 0 depth: 1 depth: 2 depth: 3 depth: 3 depth: 2 depth: 3 depth: 3 depth: 1 depth: 2 depth: 3 depth: 3 depth: 2 depth: 3 depth: 3 Das Obige ist ein Beispiel für die Verwendung einer rekursiven Funktion. Wenn Sie diese Idee kennen, ist es einfacher, den Entscheidungsbaumalgorithmus zu implementieren. Versuchen wir es also.
Recommended Posts