C ++ - Rekursion (mit Beispiel)

In diesem Tutorial lernen wir anhand von Beispielen die rekursive Funktion in C ++ und ihre Arbeitsweise kennen.

Eine Funktion, die sich selbst aufruft, wird als rekursive Funktion bezeichnet. Diese Technik wird als Rekursion bezeichnet.

Arbeiten der Rekursion in C ++

 void recurse() (… recurse();… ) int main() (… recurse();… )

Die folgende Abbildung zeigt, wie die Rekursion funktioniert, indem sie sich immer wieder aufruft.

Wie Rekursion in der C ++ - Programmierung funktioniert

Die Rekursion wird fortgesetzt, bis eine bestimmte Bedingung erfüllt ist.

Um eine unendliche Rekursion zu verhindern, kann die Anweisung if… else (oder ein ähnlicher Ansatz) verwendet werden, wenn ein Zweig den rekursiven Aufruf ausführt und der andere nicht.

Beispiel 1: Faktor einer Zahl mit Rekursion

 // Factorial of n = 1*2*3*… *n #include using namespace std; int factorial(int); int main() ( int n, result; cout <> n; result = factorial(n); cout << "Factorial of " << n << " = " < 1) ( return n * factorial(n - 1); ) else ( return 1; ) )

Ausgabe

 Geben Sie eine nicht negative Zahl ein: 4 Faktor 4 = 24

Arbeitsweise des Fakultätsprogramms

So funktioniert dieses C ++ - Rekursionsprogramm

Wie wir sehen können, factorial()ruft sich die Funktion selbst auf. Bei jedem Aufruf haben wir jedoch den Wert von n um verringert 1. Wenn n kleiner als ist 1, gibt die factorial()Funktion letztendlich die Ausgabe zurück.

Vor- und Nachteile der Rekursion

Nachfolgend finden Sie die Vor- und Nachteile der Verwendung der Rekursion in C ++.

Vorteile der C ++ - Rekursion

  • Dies macht unseren Code kürzer und sauberer.
  • Bei Problemen mit Datenstrukturen und erweiterten Algorithmen wie Graph und Tree Traversal ist eine Rekursion erforderlich.

Nachteile der C ++ - Rekursion

  • Im Vergleich zu einem iterativen Programm nimmt es viel Stapelplatz in Anspruch.
  • Es verbraucht mehr Prozessorzeit.
  • Das Debuggen kann im Vergleich zu einem äquivalenten iterativen Programm schwieriger sein.

Interessante Beiträge...