Rekursive Funktionen in Python

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.

Merkmale, die eine rekursive Funktion haben müssen
Grundkoffer
Es wird uns erlauben, die Funktion irgendwann zu beenden und es wird keine unendlichen Aufrufe geben.

Rekursiver Fall
In diesem Fall rufen wir die Funktion erneut auf, nähern uns aber der Lösung. In den Beispielen wird es besser aussehen.

Hinweis
Es ist wichtig, sich über den Basisfall im Klaren zu sein und zu wissen, dass der rekursive Fall näher an ihn heranrückt und nicht in einen Zustand unendlicher Aufrufe übergeht. Dies ist ein häufiger Fehler, wenn mit der Rekursion begonnen wird.

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.

See also  So setzen Sie Google als Startseite in Firefox, Edge, Safari und Chrome 2020 ein

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 :

factorialRecursivo.jpg

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.

See also  Aktivieren oder deaktivieren Sie die automatische Vervollständigung im Explorer oder unter Windows 10

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:

sumaRecursiva.jpg

Hinweis
Obwohl wir mit Rekursion eine elegante und in der Regel kürzere Lösung verwenden sollten, wenn wir keine andere Option haben, ist es die bessere Wahl, wenn wir durch die iterative Variante ziehen können, da sie weniger Speicher verbraucht und in der Regel schneller ist.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *