Rekursive Funktion in C ++ - Wie funktioniert es? Syntax und Beispiele

Inhaltsverzeichnis:

Anonim

Einführung in die rekursive Funktion in C ++

Um mit der rekursiven Funktion in C ++ zu beginnen, haben wir bereits die Grundidee hinter C ++ - Funktionen kennengelernt, die die Funktionsdefinition zum Aufrufen anderer Funktionen einschließt. Und dieser Artikel befasst sich mit dem Konzept der rekursiven Definition, einem Spielwerkzeugkonzept in Mathematik und Programmierlogik. Ein bekanntes Beispiel ist die Fakultät einer Zahl, die Summe von 'n' natürlichen Zahlen usw. Eine Funktion, die sich selbst aufruft, wird als rekursive Funktion bezeichnet. Sie sind nur eine Funktion, die wiederholt aufgerufen wird. Recursion verfügt über ein Tool zur Problemlösung, mit dem die größeren Probleme in einfache Aufgaben unterteilt und einzeln erarbeitet werden, um einer individuellen Reihenfolge zu folgen.

Die Datenstrukturkonzepte wie Suchen, Sortieren, Durchlaufen eines Baumes nutzen die rekursive Funktion für ihre Lösungen. Diese Programmiertechnik erleichtert den Code. Sowohl die Iteration als auch die Rekursion führen den gleichen Vorgang wie die Wiederholung des Codes aus, der Unterschied bei der Rekursion besteht jedoch darin, dass sie einen bestimmten Teil mit der Basisfunktion selbst ausführen. In diesem Artikel werden wir die Bedeutung der Rekursion und ihren Arbeitsprozess anhand eines Beispiels detailliert erläutern.

Syntax der rekursiven Funktion in C ++

Die allgemeine Syntax der rekursiven Funktion in c ++ lautet:

return type function name((arguments))
(
Body of the statements;
function name ((actual arguments)) // recursive function
)

Wie funktioniert die rekursive Funktion in C ++?

Die Rekursion wiederholt die Funktionsaufrufe und stoppt die Ausführung, wenn der Basisfall wahr wird. In der rekursiven Funktion sollte eine Basisfallbedingung definiert werden, um eine Stapelüberlauf-Fehlermeldung zu vermeiden. Wenn kein Basisfall definiert ist, führt dies zu einer unendlichen Rekursion. Wenn eine Funktion aufgerufen wird, werden sie jedes Mal für die reservierenden Ressourcen für jeden Wiederholungsaufruf in einen Stapel verschoben. Es gibt das Beste bei Baumdurchquerung. Es gibt zwei verschiedene Arten der Rekursion: Direkte und indirekte Rekursion.

Direkt rekursiv: Abbildung

int fibn(n)
(
fib(n);
)
void main ()
(
fib(n);
)

Das obige Format ist der direkte rekursive Aufruf, bei dem er sofort aufruft / von selbst aufruft. Stellen Sie sich einen zweiten Typ vor, der indirekte Rekursion genannt wird und einen anderen Funktionsaufruf umfasst. Es ist in der folgenden Abbildung zu sehen:

Indirekt rekursiv: Abbildung

void f(int n) (
f1();
return;
)
void f2( int n) (
f();
return;
)
void f1() (
f2();
return;
)

Beispiele für rekursive Funktionen in C ++

Im folgenden Programm sehen Sie die Ausführung des Programms, das ich mit der Standardgrundbedingung versehen habe. Manchmal hilft die Verwendung der if-else-Bedingung bei der Rekursion, eine unendliche Rekursion zu verhindern. Der Prozess des Codes wird mit der Teillösung im Zwischenprodukt durchgeführt und diese werden bei einer Endrekursion zu einer Endlösung kombiniert.

Beispiel 1

Hier ist ein einfaches Beispiel einer Fibonacci-Reihe einer Zahl. Das folgende Programm enthält einen Aufruf der als fib (int n) definierten rekursiven Funktion, die Eingaben vom Benutzer entgegennimmt und in 'n' speichert. Der nächste Schritt beinhaltet das Aufnehmen einer for-Schleife, um den Term zu generieren, der an die Funktion fib () übergeben wird und die Fibonacci-Reihe zurückgibt. Der Basisfall wird mit der if-Anweisung festgelegt, indem die Zahl = 1 oder 2 markiert wird, um die ersten beiden Werte auszudrucken. Schließlich wird diese rekursive Funktion mit der Schleife fortgesetzt, um die Reihe 1, 1, 2 zu drucken.

Code:

#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)

Ausgabe:

Beispiel # 2

Überprüfen der Palindrom-Nummer mithilfe einer rekursiven Funktion.

Code:

#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)

Ausgabe:

Beispiel # 3

Programmieren Sie mit einem Zufallsgenerator.

Code:

#include
#include
#include
#include
using namespace std;
int rand1(int n);
int main () (
int n, j;
int r;
srand(time (NULL));
cout << "Enter number of dice: ";
cin >> n;
for (j = 1; j <= n; j++) (
r = rand1(5) + 1;
cout << r << " ";
)
system("PAUSE");
return 0;
)
int rand1(int n) (
return rand () % n;
)

Das obige Programm zeigt einen Zufallszahlengenerator, wenn ein Würfel zufällig gewürfelt wird. Es wird durch Aufrufen einer Funktion rand1 (int n) ausgeführt und generiert 0 bis n-1 Zahlen. und Setzen des Startwerts mit Null (keine Adresse). Wenn wir zum Beispiel 4 eingeben, gibt es eine Würfelmöglichkeit von 5, 4, 1, 2.

Ausgabe:

Es gibt auch einige Konzepte wie lineare Suche, gemeinsamer Teiler und wichtigste Fakultät einer bestimmten Zahl, die eine rekursive Implementierung verwenden.

Vorteile der Rekursion

  • Der von ihnen bereitgestellte Code ist übersichtlich und kompakt, da das größere komplexe Programm vereinfacht wird. Verwendet weniger Variablen im Programmcode.
  • Komplexer Code und verschachtelte for-Schleifen werden hier vermieden.
  • Ein Teil des Codes erfordert eine Rückverfolgung, die rekursiv gelöst wird.

Nachteile der Rekursion

  • Verbraucht mehr Speicherplatz aufgrund der Stapeloperation aller Funktionsaufrufe.
  • Es ist manchmal langsamer, während der Iterationsprozess ausgeführt wird. Daher ist die Effizienz geringer.
  • Für Anfänger ist es schwierig, die Arbeitsweise zu verstehen, da der Code manchmal detailliert ist. wenn dies zu nicht genügend Speicherplatz führt und letztendlich Programmabstürze verursacht.

Fazit

Damit haben wir besprochen, wie c ++ - Funktionen funktionieren und rekursiv definiert. Und wir haben die Korrespondenz und ihre Vor- und Nachteile der rekursiven Funktion in der Programmierwelt durchgearbeitet. Anschließend haben wir anhand einer rekursiven Funktionsdefinition gezeigt, wie sie in C ++ implementiert werden kann. Darüber hinaus kommen wir zu dem Schluss, dass die Rekursion in C ++ bei der Lösung von Problemen in Datenstrukturkonzepten wie Durchlaufen, Sortieren und Suchen hilft und überall dort effektiv eingesetzt werden kann, wo dies erforderlich ist.

Empfohlene Artikel

Dies ist eine Anleitung zur rekursiven Funktion in C ++. Hier diskutieren wir, wie rekursive Funktionen in C ++ funktionieren, die Syntax zusammen mit verschiedenen Beispielen und der Code-Implementierung. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Was sind C ++ - Array-Funktionen?
  2. Übersicht über C ++ - Zeichenfolgenfunktionen
  3. Bester C ++ Compiler (Beispiele)
  4. Einführung in C ++ - Befehle
  5. Fibonacci-Reihe in Java
  6. Zufallszahlengenerator in Matlab
  7. Zufallszahlengenerator in C #
  8. Palindrom in C ++
  9. Zufallszahlengenerator in JavaScript
  10. Top 11 Features und Vorteile von C ++
  11. Lernen Sie die Arten von Array-Funktionen in PHP