Rekursive Funktionen in Python

PythonBeginner
Jetzt üben

Einführung

Willkommen in das mythische Reich von Pythonesia, einem großen Reich, das für seine fortschrittliche Verwendung von magischen und mathematischen Konstrukten berühmt ist. Als Oberhaupt der königlichen Garde des Reiches hast du die Aufgabe, das kostbarste Artefakt des Reiches zu verteidigen: Der Rekursive Kristall. Legenden behaupten, dass er mit einem alten Code gefertigt wurde, der sich selbst in einer Schleife abläuft, um eine unendliche Energiequelle zu schaffen. Um diesen Artefakt besser zu verstehen und zu schützen, musst du die Kunst der Rekursion in Python beherrschen - die selbe Fähigkeit, mit der er geschaffen wurde.

Dein Ziel wird es sein, die Macht der Rekursion zu nutzen, um komplexe Probleme zu lösen, die nicht leicht mit herkömmlichen Mitteln gelöst werden können. Dadurch wirst du die Sicherheit des Reichtums und der Kenntnisse des Reiches gegen diejenigen gewährleisten, die sie missbrauchen möchten. Bereite dich auf eine Reise durch Zeit und Code vor, um die Geheimnisse von rekursiven Funktionen zu entwirren.

Rekursion verstehen

In diesem Schritt lernst du das grundlegende Konzept der Rekursion und wie du es in Python implementierst. Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft, um ein Problem zu lösen. Der Schlüssel zum Entwerfen einer rekursiven Funktion besteht darin, sicherzustellen, dass sie einen Basisfall hat, der eine Bedingung ist, die die Rekursion stoppt, und einen rekursiven Fall, in dem die Funktion sich selbst aufruft.

Lassen Sie uns beginnen, indem wir eine einfache rekursive Funktion erstellen, die die Fakultät einer Zahl berechnet. Die Fakultät einer Zahl n ist das Produkt aller positiven ganzen Zahlen, die kleiner oder gleich n sind.

Öffnen Sie ~/project/factorial.py in Ihrem bevorzugten Texteditor und fügen Sie den folgenden Code hinzu:

def factorial(n):
    if n == 0:  ## Basisfall
        return 1
    else:        ## Rekursiver Fall
        return n * factorial(n - 1)

## Beispielverwendung
print(factorial(5))

Um den Code auszuführen, verwenden Sie den folgenden Befehl:

python3 factorial.py

Das erwartete Ergebnis sollte 120 sein, da 5! = 5 * 4 * 3 * 2 * 1 = 120.

Rekursion mit mehreren Basisfällen

Als nächstes lernst du, wie du eine rekursive Funktion mit mehreren Basisfällen konstruierst. Schreiben wir eine Funktion fibonacci in eine Datei namens fibonacci.py, die die Fibonacci-Folge bis zur n-ten Zahl berechnet. Die Fibonacci-Folge ist eine Reihe von Zahlen, bei der jede Zahl die Summe der beiden vorhergehenden Zahlen ist, beginnend bei 0 und 1.

Gib folgenden Code in ~/project/fibonacci.py ein:

def fibonacci(n):
    if n == 0:  ## Erster Basisfall
        return 0
    elif n == 1:  ## Zweiter Basisfall
        return 1
    else:         ## Rekursiver Fall
        return fibonacci(n - 1) + fibonacci(n - 2)

## Beispielverwendung
print(fibonacci(10))

Führe den Code mit dem Befehl aus:

python3 fibonacci.py

Das erwartete Ausgabe sollte 55 sein, da es die 10. Zahl in der Fibonacci-Folge ist.

Zusammenfassung

In diesem Lab haben wir das Konzept der Rekursion in Python untersucht, indem wir es auf zwei verschiedene mathematische Folgen angewandt haben. Der Entwurfsprozess drehte sich um das Schaffen einer faszinierenden Storyline, die das Lernen von Rekursion interessant und relevant macht. Die Aufgaben wurden von einem einfachen einzelnen Basisfall der Fakultäten bis zu einem etwas komplexeren Szenario mit mehreren Basisfällen bei Fibonacci aufgebaut, um ein umfassendes Verständnis zu gewährleisten.

Am Ende des Labs bist du nicht nur in der Lage, rekursive Funktionen zu schreiben, sondern auch den Wert von Basisfällen und die Mechanismen hinter rekursiven Aufrufen verstanden. Du hast jetzt den Schlüssel zur Nutzung rekursiver Algorithmen, um reale Probleme zu lösen, eine Fähigkeit, die genauso wertvoll ist wie der mythische Rekursive Kristall von Pythonesia selbst.