Rekursive Funktionen
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 8 von 68.
Rekursion ist eine Programmiertechnik, bei der eine Funktion sich selbst aufruft, um ein Problem zu lösen. Dies erzeugt ein schleifenähnliches Verhalten, aber anstatt traditionelle Schleifen zu verwenden, ruft sich die Funktion wiederholt mit modifizierten Parametern selbst auf, bis sie eine Lösung erreicht.
Jede rekursive Funktion muss zwei wesentliche Komponenten haben, um korrekt zu funktionieren:
Basisfall: Dies ist die Bedingung, die die Rekursion stoppt. Ohne sie würde sich die Funktion unendlich oft selbst aufrufen, was zum Absturz Ihres Programms führen würde. Der Basisfall definiert, wann die Funktion ein Ergebnis zurückgeben soll, anstatt sich erneut selbst aufzurufen.
Rekursionsschritt: Hier ruft sich die Funktion selbst mit einer modifizierten Version des ursprünglichen Problems auf und nähert sich schrittweise dem Basisfall.
Hier ist ein einfaches Beispiel für eine rekursive Funktion, die eine Fakultät berechnet:
<?php
function factorial($n) {
// Basisfall: Die Fakultät von 1 ist 1
if ($n <= 1) {
return 1;
}
// Rekursionsschritt: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Ausgabe: 120
?>In diesem Beispiel ruft factorial(5) factorial(4) auf, welches factorial(3) aufruft, und so weiter, bis factorial(1) (der Basisfall) erreicht wird. Dann werden die Ergebnisse wieder nach oben multipliziert: 1 × 2 × 3 × 4 × 5 = 120.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachErstellen Sie eine rekursive Funktion namens sumDigits, die eine positive Ganzzahl entgegennimmt und die Summe ihrer Ziffern zurückgibt. Die Funktion sollte Rekursion verwenden, um die Zahl Ziffer für Ziffer zu zerlegen.
Sie erhalten eine Eingabe: eine positive Ganzzahl. Lesen Sie die Eingabe ein, rufen Sie Ihre rekursive Funktion mit dieser Zahl auf und geben Sie die Summe ihrer Ziffern aus.
Eingabeformat: Eine Zeile, die eine positive Ganzzahl enthält
Erwartete Ausgabe: Die Summe aller Ziffern der Zahl
Spickzettel
Rekursion ist eine Programmiertechnik, bei der eine Funktion sich selbst aufruft, um ein Problem zu lösen. Jede rekursive Funktion benötigt zwei Komponenten:
Basisfall: Die Bedingung, die die Rekursion stoppt, um Endlosschleifen zu verhindern.
Rekursionsschritt: Hier ruft sich die Funktion mit geänderten Parametern selbst auf und bewegt sich auf den Basisfall zu.
Beispiel einer rekursiven Fakultätsfunktion:
<?php
function factorial($n) {
// Basisfall: Die Fakultät von 1 ist 1
if ($n <= 1) {
return 1;
}
// Rekursionsschritt: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Ausgabe: 120
?>Probier es selbst
<?php
// Eingabe lesen
$number = intval(fgets(STDIN));
// TODO: Erstellen Sie hier Ihre rekursive Funktion sumDigits
// Rufen Sie die Funktion auf und geben Sie das Ergebnis aus
echo sumDigits($number);
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung