[PYTHON] Rekursive Funktion

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. スクリーンショット 2020-01-21 15.26.30.png

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

Rekursive Funktion
Python-Funktion ①
[Python] -Funktion
Rekursiver Reißverschluss
So erstellen Sie eine rekursive Funktion
In-Funktion-Funktion
Python-Funktion ②
Funktionsüberprüfung
python3x: Lambda-Funktion
Python> Funktion> Schließen
[Python] Generatorfunktion
Dualität in der Funktion
Rekursives Darstellungsprotokoll
Python-Funktionsdekorateur
Rekursive Funktion, die die XML-Baumstruktur anzeigt [Hinweis]
So lösen Sie die rekursive Funktion, die abc115-D gelöst hat
Betrachten Sie die Konvertierung von Python rekursiv in nicht rekursiv