Demystifizierung der Pythonrekursion

Die meisten komplexen Aufgaben in Python können in einfachere Unteraufgaben aufgeteilt werden. Rekursion hilft dabei, den Code sauber und ordentlich zu machen. In diesem Lernprogramm werden die Rekursion, die Vorteile der Rekursion und ihre Verwendung in der Python-Programmierung vorgestellt.

Was ist Rekursion??

Rekursion ist eine Methode zum Lösen eines Problems mit den Lösungen für kleinere Instanzen desselben Problems. Dieser Ansatz kann auf viele Arten von Herausforderungen bei der Programmierung angewendet werden.

Die Vorteile der Rekursion

Einige der Vorteile der Rekursion sind:

  • Rekursion erleichtert das Schreiben von Code und erleichtert so das Debuggen.
  • Rekursion reduziert die Zeit, die ein Algorithmus für die Ausführung in Abhängigkeit von der Länge der Eingabe benötigt.
  • Rekursion ist auch bei der Lösung sehr komplexer Probleme, insbesondere bei Baumstrukturen, bevorzugt, da sie bessere Ergebnisse liefert.

Einführung in die rekursive Python-Funktion

Rekursion scheint zwar ein kompliziertes Verfahren zu sein, ist aber nicht so kompliziert. In Laien ausgedrückt, nehmen Sie an, Sie haben zwei Rechtecke A und B. Wenn Sie sie addieren, bilden sie ein Rechteck C. Dies ist an sich eine rekursive Prozedur. Wir haben kleinere Instanzen eines Rechtecks ​​verwendet, um sich selbst zu definieren, und wenn wir eine Python-Funktion schreiben würden, würde dies folgendermaßen aussehen:

def Rechteck (a, b): Rückgabe von a + b 

Da eine rekursive Funktion sich selbst aufruft, muss es eine Regel oder einen Haltepunkt geben, an dem der Prozess oder die Schleife enden würde. Eine solche Bedingung wird als Basisbedingung bezeichnet. In jedem rekursiven Programm ist eine Grundbedingung erforderlich, da sonst die Prozedur zu einer Endlosschleife führt.

Die zweite Voraussetzung ist der rekursive Fall, wenn die Funktion sich selbst aufruft.

Schauen wir uns ein Beispiel an:

In diesem Beispiel schreiben Sie eine faktorielle Funktion, die eine ganze Zahl (positiv) als Eingabe verwendet. Die Fakultät einer Zahl erhält man durch Multiplikation der Zahl mit allen darunter liegenden positiven ganzen Zahlen. Zum Beispiel, Fakultät (3) = 3 x 2 x 1, Fakultät (2) = 2 x 1, und Fakultät (0) = 1.

Als Erstes definieren Sie unseren Basisfall, der Fakultät (0) = 1 sein wird.

Wie Sie oben sehen können, besteht ein Zusammenhang zwischen jedem aufeinanderfolgenden faktoriellen Szenario. Sie sollten beachten, dass die Fakultät (4) = 4 × die Fakultät (3) ist. In ähnlicher Weise ist Fakultät (5) = 5 × Fakultät (4).

Der zweite Teil wird eine Funktion schreiben, die sich selbst aufruft.

Nun, da wir es vereinfacht haben, ist die folgende Funktion:

def Fakultät (n): if (n == 0): # Definieren Sie unseren Basisfall? return 1 else: return n * Fakultät (n-1) print (Fakultät (5)) #result # 120

Die Lösung wenn n == 0 ist:

def Fakultät (n): if (n == 0): # Definieren Sie unseren Basisfall? return 1 else: return n * Fakultät (n-1) print (Fakultät (0)) #result # 0

Nun, da Sie wissen, wie man rekursive Funktionen schreibt, wollen wir uns einige Fallstudien ansehen, die Ihr Verständnis von Rekursion festigen.

Fallstudie 1: Fibonacci

In einer Fibonacci-Folge ist jede Zahl die Summe der zwei vorhergehenden Zahlen, z. B .: 1 + 1 = 2; 1 + 2 = 3; 2 + 3 = 5; 3 + 5 = 8. Die Fibonacci-Sequenz wurde in vielen Bereichen angewandt, und die häufigste ist die Vorhersage der Kursentwicklung von Forex-Händlern am Aktienmarkt.

Die Fibonacci-Folge beginnt mit 0 und 1. Die erste Zahl in einer Fibonacci-Folge ist 0, die zweite Zahl ist 1 und der dritte Ausdruck in der Folge ist 0 + 1 = 1. Der vierte ist 1 + 1 = 2 und so weiter.

Um eine rekursive Funktion zu erhalten, müssen Sie zwei Basisfälle verwenden, d. H. 0 und 1. Sie können das Addiermuster dann in den else-Fall übersetzen.

Die resultierende Funktion wird sein:

def fibonacci (n): if (n == 1): #define Basisfall 1 return 0 + 1 elif (n == 2): #define Basisfall 1 return 1 + 2 sonst: return fibonacci (n) + fibonacci ( n-1) Druck (Fibonacci (5)) #Ergebnis # 

Fallstudie 2: Einen String umkehren

In diesem Beispiel schreiben Sie eine Funktion, die einen String als Eingabe verwendet und dann die Umkehrung des Strings zurückgibt.

Als Erstes definieren Sie unseren Basisfall, der überprüft, ob die Zeichenfolge gleich 0 ist, und in diesem Fall die Zeichenfolge selbst zurückgeben.

Der zweite Schritt besteht darin, die Umkehrfunktion rekursiv aufzurufen, um den Teil der Zeichenfolge mit Ausnahme des ersten Zeichens zu durchschneiden und das erste Zeichen dann bis zum Ende der durchschnittenen Zeichenfolge zu verketten.

Die resultierende Funktion sieht wie folgt aus:

def reverse (a): wenn len (a) == 0: return a else: return reverse (a [1:]) + a [0] print (reverse ("Python ist eine sehr leicht zu erlernende Sprache")) # result #nrael ot egaugnal ysae yrev a si nohtyP 

Fallbeispiel 3: Summe der Elemente

In diesem Beispiel schreiben Sie eine Funktion, die ein Array als Eingabe verwendet und dann die Summe der Elemente in der Liste zurückgibt.

Als Erstes definieren Sie unseren Basisfall, der prüft, ob die Größe der Liste Null ist, und gibt bei Wahr 0 zurück.

Der zweite Schritt gibt das Element und einen Aufruf der Funktion sum () minus einem Element der Liste zurück.

Die Lösung ist wie folgt:

def sum_of_numbers (l): wenn len (l) == 1: return 0 sonst: return l [0] + summe (l [1:]) a = [5,7,3,8,10] print (summe ( a)) # result # 33

Die Lösung für eine leere Liste sieht wie folgt aus:

def sum_of_numbers (l): wenn len (l) == 1: return 0 sonst: return l [0] + summe (l [1:]) b = [] print (summe (b)) # result # 0

Fazit

In diesem Lernprogramm wurde beschrieben, was zur Rekursion zur Lösung komplexer Programme in Python erforderlich ist. Es ist auch wichtig zu beachten, dass Rekursion eigene Einschränkungen hat:

  • Rekursion nimmt viel Speicherplatz in Anspruch und macht das Programm daher etwas langsamer.
  • Rekursionsfunktionen benötigen mehr Platz und Zeit für die Ausführung.

Zögern Sie nicht, zu sehen, was wir zum Verkauf anbieten und um auf dem Envato-Markt zu studieren. Bitte stellen Sie Ihre Fragen und stellen Sie mit dem untenstehenden Feed wertvolles Feedback.