In diesem Tutorial werden wir uns die Rekursion mit Beispielen in Python ansehen. Die Rekursion in der Programmierung ist eine sehr mächtige Technik. Dies geschieht mit Funktionen, die sich veámolos als eine Art Schleife nennen, da derselbe Code mehrmals wiederholt wird, bis Sie die Lösung erreichen.
Kommen wir zu den Beispielen, die einfach und kurz sind, damit sie gut aufgenommen werden können.
Beispiel 1 – Factorial
In diesem Beispiel lösen wir die Fakultät einer Zahl , wenn Sie wissen möchten, worum es bei der Fakultät geht, besuchen Sie diesen Link . Dann lasse ich den Code und erkläre unten die rekursive Funktion.
Fakultätsdef (Zahl): if (number == 0 oder number == 1): return 1 sonst: Rückgabewert * Fakultät (Zahl-1) if __name__ == "__main__": versuche: num = int (Eingabe ("Welche Zahl möchten Sie die Fakultät kennen?")) if (num <0): print ("Die Zahl muss größer oder gleich 0 sein") sonst: print ("Die Fakultät von", num, "ist", Fakultät (num)) außer: print ("Eine Nummer wird erwartet")
Unsere rekursive Funktion hat den Basisfall im if und den rekursiven im else. Sie können sehen, dass der Basisfall eine 1 zurückgibt und dass dies erreicht ist, wenn der an die Funktion übergebene Parameter 0 oder 1 ist. Wenn dieser Fall erreicht ist, ruft die Funktion nicht erneut auf. In dem rekursiven Fall haben wir einen Funktionsaufruf für sich, aber wie können Sie ihn sehen, indem Sie den Parameter auf 1 reduzieren (wir nähern uns dem Basisfall). Der letzte Teil des Codes außerhalb der Funktion ist nur dafür verantwortlich, eine Zahl vom Benutzer anzufordern und zu überprüfen, ob sie größer oder gleich 0 ist, um die Funktion aufzurufen, da die Fakultät mit negativen Zahlen nicht funktioniert.
Wenn wir die Funktion mit der Nummer 4, also Fakultät (4), aufrufen, haben wir folgende Aufrufe:
Aufruf 1: Fakultät (4) Aufruf 2: 4 * Fakultät (3) Aufruf 3: 3 * Fakultät (2) Aufruf 4: 2 * Fakultät (1)
Wenn Fakultät mit 1 aufgerufen wird, gibt es keine weiteren Aufrufe mehr und es wird 1 zurückgegeben. Diese Funktion gibt zurück und gibt die Ergebnisse an die von mir aufgerufene Funktion zurück. Die Rückgabe würde folgendermaßen aussehen:
Fakultät (1) = 1 Fakultät (2) = 2 * 1 Fakultät (3) = 3 * 2 Fakultät (4) = 4 * 6
Und wir haben bereits das Ergebnis 24, um die Zahlen zu multiplizieren: 1 * 2 * 3 * 4. Als nächstes hinterlasse ich ein Capture, wenn ich nach der Fakultät 5 frage. Dies ist nichts anderes als die Multiplikation von 5 mit der Fakultät 4 (von der wir bereits wissen, dass sie 24 ist), was 120 ergibt. Sie können auch sehen, dass der Benutzer die falsche Zahl eingibt :
Beispiel 2 – Addition / Subtraktion
In diesem Beispiel habe ich eine rekursive Funktion eingefügt, um eine Addition oder Subtraktion durchzuführen. Natürlich wird dieses Beispiel normalerweise nicht im wirklichen Leben gegeben, aber als Beispiel hilft es:
def operieren (Nummer1, Nummer2): if (number2 == 0): return number1 elif (Nummer2 <0): Rückkehroperation (Nummer1-1, Nummer2 + 1) sonst: Rückkehroperation (Nummer1 + 1, Nummer2-1) if __name__ == "__main__": print ("Addition von 10 und 3:", operiere (10, 3)) print ("Addition von 5 und -2:", operiere (5, -2))
Hier haben wir einen Basisfall und 2 rekursive Fälle, um zu wissen, welche Art zu berühren ist, da wir je nachdem, ob die Zahl positiv oder negativ ist, unterschiedlich handeln müssen. Die Funktion oper empfängt 2 Zahlen, und der Algorithmus ist dafür verantwortlich, eine Zahl zu subtrahieren oder zu der Zahl 2 zu addieren und an die Zahl 1 zu übergeben (wenn die Zahl 2 positiv ist, wird der Rest 1 an die Zahl 2 und die Zahl 1 addiert) gleich 0.
Fügen wir zum Beispiel 3 + 2 hinzu, um die Anrufe zu beobachten.
Aufruf 1: bedienen (3.2) Aufruf 2: bedienen (4.1) Aufruf 3: bedienen (5.0)
In diesem Fall haben wir, wenn wir operieren (5.0), nichts anderes zu tun, als das Ergebnis direkt zu erhalten (im Gegensatz zu der Fakultät, die die Multiplikation durchgeführt hat). Dann überlasse ich Ihnen das Ergebnis der Ausführung des Codes: