A Taste of Rekursion

Rekursion ist eine große, die Sie unheimlich Wort oft über die Programmierung zu hören, vor allem die frustrierende Art der Programmierung, dass sie an der Universität lehren. Obwohl es sich um ein einfaches Konzept zu beschreiben ist, ist es wirklich ein Geist-Gebläse, wenn es um das Verständnis kommt, wie Rekursion funktioniert. Die meisten Leute es einfach akzeptieren und weitermachen. Nicht hier!

Rekursion Aufruf ist im Grunde der Prozess der Funktion selbst. Beispielsweise:

Leere Funkt (int x) {Funkt (x) -}

In diesem Teil des Codes finden Sie ein schreckliches Beispiel für eine rekursive Funktion, aber es dient illustrativen Zwecken hier: Das Funkt () Funktion nennt sich. Das ist Rekursion. Nun, was in diesem Beispiel passiert, ist im Grunde eine Endlosschleife, und dank einer technischen etwas-oder-andere, die so genannte Stapel pointer, der Computer schließlich abstürzt. Aber es ist nur eine Darstellung.

Für Rekursion funktioniert, muss die Funktion einen Bailout Zustand haben, wie eine Schleife. Daher kann entweder der Wert auf die rekursive Funktion oder der Rückgabewert übergeben muss geprüft werden. Hier ist ein besseres Beispiel für eine rekursive Funktion:

Leere Rekursion (int x) {if (x == 0) return-else {puts ( "! Boop") - Rekursion (- x) -}}

Das Rekursion () Funktion übernimmt den Wert x. Ob x Null ist, wird die Funktion kautionen gleich. Andernfalls wird die Funktion erneut aufgerufen, aber der Wert von x ist reduziert. Das Dekrement Präfixoperator wird verwendet, so dass der Wert von x ist reduziert Vor der Anruf gemacht wird.

Die Probe Rekursion () Funktion spuckt im Grunde den Text aus Boop! eine vorgegebene Anzahl von Malen. Also, wenn Rekursion () mit dem Wert 10, aufgerufen wird, sehen Sie, dass Text zehnmal angezeigt.

Der wahnsinnige Teil über Rekursion ist, dass die Funktion selbst weiter Aufruf, Verpackung sich enger und enger, als ob sie in eine Spirale ist. In dem vorhergehenden Beispiel ist die Bedingung x == 1 schließlich abwickelt, dass kurvigen Chaos zunehmend zurückziehen, bis die Funktion ausgeführt wird.

Der folgende Code zeigt ein volles Programm mit der Probe Rekursion () Funktion.

# include Leere Rekursion (int x) -int main () {Rekursion (10) -return (0) -} void Rekursion (int x) {if (x == 0) return-else {puts ( "! Boop") -recursion (- x) -}}

Eine gemeinsame Demonstration der Rekursion ist eine Fakultätsfunktion. Das Fakultät ist das Ergebnis ein Wert, der durch jede seiner positiven ganzen Zahlen multipliziert wird. Beispielsweise:

4! = 4 x 3 x 2 x 1

Das Ergebnis dieser Fakultät ist 24. Der Computer auch diese Berechnung kann entweder durch eine Schleife implementieren oder eine rekursive Funktion zu schaffen. Hier ist eine solche Funktion:

int factorial (int x) {if (x == 1) return (x) -elsereturn (x * factorial (x-1)) -}

Wie bei den anderen rekursiven Funktionen, die Fakultät() Funktion enthält eine Ausgangsbedingung: x == 1. Andernfalls wird die Funktion erneut aufgerufen, mit einer kleiner als der aktuelle Wert von x. Aber die ganze Handlung spielt mit den Rückgabewerten.

Menü