English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift Rekursion

In diesem Artikel werden Sie lernen, rekursive Funktionen zu erstellen. Eine selbstaufrufende Funktion.

sich selbst aufrufendFunktionWird als rekursive Funktion bezeichnet. Und diese Technik wird Rekursion genannt. Beim Erstellen einer rekursiven Funktion müssen Bedingungen erstellt werden, um sicherzustellen, dass die Funktion sich nicht endlos selbst aufruft.

Wie funktioniert Rekursion in Swift?

func recurse() {
    //Anweisungen
    recurse()
}
recurse()

Das folgende Diagramm zeigt die Art der Rekursion.

In der obigen Flussdiagramm wird die Rekursion endlos ausgeführt. In einigen Fällen mögen Sie eine Rekursion erstellen, die endlos ausgeführt wird, bis eine bestimmte Bedingung erfüllt ist.

Um endlose Rekursion zu vermeiden, verwenden Sie rekursive Aufrufe in den Swift-Bedingungsanweisungen, z.B.if ... else Anweisung

Beispiel1:ausgebenN positive Zahlen

func countDownToZero(num: Int) {
    print(num)
    if num > 0 {
        countDownToZero(num: num - 1)
    }
}
print("Countdown:")
countDownToZero(num:3)

Wenn Sie das folgende Programm ausführen, wird die Ausgabe sein:

Countdown:
3
2
1
0

In dem obigen Programm gibt die Anweisung print("Countdown:") im Konsolenfenster ausCountdown:。Diese Anweisung ruft die Funktion countDownToZero(num: mit dem Integer-Typ-Parameter3) 。

countDownToZero() führt die Anweisungen innerhalb der Funktion aus, wenn die Bedingung num > 0 erfüllt ist, ruft countDownToZero(num: num - 1)。

Falls die Bedingung nicht erfüllt ist, wird die Funktionsaufruf nicht ausgeführt und die Rekursion wird beendet.

Lassen Sie uns die spezifischen Schritte betrachten

Schritte ausführen
SchritteFunktion aufrufenausgebennum > 0 ?
1countDownToZero(3)3Ja
2countDownToZero(2)2Ja
3countDownToZero(1)1Ja
4countDownToZero(0)0Nein (Beenden)

Beispiel2:Zahlenfaktoriel berechnen

func faktorial(of num: Int) -> Int
    if num == 1 {
        zurück 1
    } else {
        return num * faktorial(of:num - 1)
    }
}
let x = 4
let result = faktorial(of: x)
print("Das faktorial von \(x) ist \(result)")

Wenn Sie das folgende Programm ausführen, wird die Ausgabe sein:

Das faktorial von 4 ist 24

Wie funktioniert dieses Beispiel?

Lassen Sie uns Schritt für Schritt sehen

Schritte ausführen
SchritteÜbergebene ParameterRückgabeanweisungWert
14zurück 4 * faktorial(of:3)4 * faktorial(of:3)
23zurück 3 * faktorial(of:2)4 *3 * faktorial(of:2)
32zurück 2 * faktorial(of:1)4 * 3 *2 * faktorial(of:1)
41zurück 14 * 3 * 2 * 1

Wenn eine Lösung für das Problem in etwa in zwei Schritten gefunden werden kann, wird oft Rekursion als Ersatz für Iteration verwendet.