Einführung in die rekursive Funktion in C

Das Wiederholen der Elemente auf ähnliche Weise wie zuvor wird als Rekursion bezeichnet. Eine Funktion wird als rekursiv bezeichnet, wenn sie in sich selbst aufgerufen wird. Die Rekursion wird von der Programmiersprache C unterstützt. Nachfolgend sind zwei Bedingungen aufgeführt, die für die Implementierung der Rekursion in C von entscheidender Bedeutung sind:

  • Eine Beendigungsbedingung: Diese Bedingung hilft der Funktion, zu identifizieren, wann diese Funktion beendet werden muss. Falls wir die Ausgangsbedingung nicht angeben, tritt der Code in eine Endlosschleife ein.
  • Ändern des Zählers: Ändern des Zählers bei jedem Aufruf dieser Funktion.

Auf diese Weise können wir eine rekursive Funktion in der Programmiersprache C implementieren. Diese Funktionen sind nützlich, um mathematische Geldprobleme zu lösen, bei denen ein ähnlicher Prozess mehrmals aufgerufen werden muss. Beispiele für solche Probleme sind die Berechnung der Fakultät einer Reihe von Fibonacci-Reihen.

Syntax:

int fun(a1)
(
If(base_condition) return val;
fun(a2);
)

Wie funktioniert die rekursive Funktion in C?

Rekursive Funktionen sind die Möglichkeit, die Gleichung in der Programmiersprache C zu implementieren. Eine rekursive Funktion wird mit einem übergebenen Argument namens n aufgerufen. Der Speicher im Stapel wird sowohl den lokalen Variablen als auch den Funktionen zugewiesen. Alle in der Funktion vorhandenen Operationen werden unter Verwendung dieses Speichers ausgeführt. Die Bedingung für das Verlassen wird überprüft, ob sie erfüllt ist. Wenn der Compiler einen Aufruf einer anderen Funktion erkennt, reserviert er sofort neuen Speicher oben im Stapel, in dem eine andere Kopie derselben lokalen Variablen und der Funktion erstellt wird. Geben Sie den gleichen Prozess weiter.

Wenn die Basisbedingung true zurückgibt, wird der bestimmte Wert an die aufrufende Funktion übergeben. Der dieser Funktion zugewiesene Speicher wird gelöscht. In ähnlicher Weise wird der neue Wert in der aufrufenden Funktion berechnet und die IT kehrt zur übergeordneten aufrufenden Funktion zurück. Auf diese Weise erreichen rekursive Aufrufe der Funktion delete die erste Funktion und der gesamte Stapelspeicher wird gelöscht und die Ausgabe zurückgegeben. Wenn in der Funktion keine Basisbedingung oder keine Ausgangsbedingung angegeben ist, können rekursive Aufrufe der Funktion zu einer Endlosschleife führen.

Beispiel für eine rekursive Funktion

Jetzt werden wir die Beispiele für rekursive Funktionen in C sehen

Code:

#include
int fun(int n)
(
if(n==1) return 1 ; //exit or base condition which gives an idea when to exit this loop.
return n*fun(n-1); //function is called with n-1 as it's argument .
//The value returned is multiplied with the argument passed in calling function.
)
int main()(
int test=4;
int result =0;
result =fun(test);
printf("%d", result);//prints the output result.
)

Ausgabe:

Erklärung des obigen Codes

Das oben gegebene Beispiel ist das Finden der Fakultät einer Zahl. Wenn die Hauptfunktion fun (4) aufruft, wird zuerst die Ausgangsbedingung (4 == 1) überprüft und dann 4 * fun (3) aufgerufen. Wieder wird die Grundbedingung (3 == 1) geprüft. In ähnlicher Weise wird 3 * fun (2) zurückgegeben und dies setzt sich fort, bis 2 * fun (1) aufgerufen wird und dort, wo es die Grundbedingung erfüllt und 1 zurückgibt, dann die aufrufende Funktion 2 * 1 zurückgibt, dann 3 * 2 * 1 und ab dem ersten Aufruf wird 4 * 3 * 2 * 1 zurückgegeben. Somit ergeben sich Hauptfunktionsspeicher 24 und druckt diese bei der Ausgabe.

Speicherzuordnung der rekursiven Funktion

Jeder Aufruf einer Funktion in der Sprache c führt zu einer Speicherzuweisung oben auf einem Stapel. Wenn eine rekursive Funktion aufgerufen wird, wird ihr Speicher oben auf dem Speicher zugewiesen, der der aufrufenden Funktion zugewiesen wurde, wobei für jeden Funktionsaufruf eine andere Kopie der lokalen Variablen erstellt wird.
Was ist die Grundbedingung ist erreicht, der der Funktion zugewiesene Speicher wird zerstört und der Zeiger kehrt zur aufrufenden Funktion zurück? Dieser Vorgang wird dann beim ersten Aufruf der Funktion wiederholt und zuletzt wird der Stapelspeicher leer.

In dem oben angegebenen Beispiel zum Berechnen der Fakultät einer Zahl unten ist das Szenario für die Speicherzuweisung.

Schritt 1

Schritt 2

Schritt 3

Schritt 4

Schritt - 5

Schritt - 6

Schritt - 7

Schritt - 8

Schritt - 9

Arten der Rekursion

In der C-Programmierung gibt es zwei Arten der Rekursion:

1. Schwanz und nichtschwänzige Rekursion

Die oben angegebene Art der Rekursion wird nachfolgend erläutert:

  • Schwanzrekursion

Dies ist eine Art von Rekursionsaufruf für rekursive Funktionen in der Funktion, die die letzte Aktion ist, die in der Definition der Funktion ausgeführt wird. Bedeutet, dass ein rekursiver Aufruf erfolgt, nachdem alle anderen Logikelemente in der Funktion implementiert wurden.

Die Verwendung einer Tail-Rekursion in unserem Programm in Hansis die Leistung des Programms und reduziert auch die Speichernutzung dieser Funktion. Dies liegt daran, dass, wie andere Logik in der Funktion implementiert wurde, der der aufrufenden Funktion zugewiesene Speicher vom Stapel entfernt und wiederverwendet werden kann.

Code:

int fun1(n)(
printf(“the result is “);
return fun1(n-1);
)
void main()
(
fun1(4);
)

  • Non-Tailed-Rekursion

Diese Art der rekursiven Rekursionscollage wird in der Mitte der Funktionsdefinition erstellt. Die Rekursion der Herrenhose ist abgeschlossen und die an die aufrufende Funktion zurückgegebenen Werte müssen in weiteren Schritten ausgeführt werden, sodass der Speicher nicht gelöscht werden kann.

Code:

int fun1(n)(
printf(“the result is “);
return n* fun1(n-1);
)
void main()(
fun1(4);
)

2. Direkte und indirekte Rekursion

Die oben angegebene Art der Rekursion wird nachfolgend erläutert:

  • Indirekte Rekursion

Indirekte Rekursion tritt auf, wenn eine bestimmte Funktion rekursiv als Medium einer anderen Funktion aufgerufen wird.

Code:

int fun1()(
fun2();
)
int fun2()(
fun1(); // calling the procedure recursively using another function.
)
void main()(
fun1();
)

  • Direkte Rekursion

Direkte Rekursion tritt auf, wenn der rekursive Aufruf der Funktion innerhalb seiner eigenen Definition erfolgt. '

Code:

int fun1()(
fun1();
)
void main()(
fun1();
)

Fazit

Es kann leicht gefolgert werden, dass rekursive Funktionen für die Lösung mathematischer Probleme am wichtigsten sind, für die eine ähnliche Methode erforderlich ist, bei der die gesamte Logik wiederholt implementiert wird, bis eine Austrittsbedingung erfüllt ist. Viele Probleme wie Türme von Hanoi, Baumdurchquerungen, Berechnung der Tiefe von Graphen.

Es ist wichtig, eine Grundbedingung für die rekursive Funktion zu erwähnen. Der Speicher- und Zeitbedarf für das rekursive Programm ist im Vergleich zu den iterativen höher und muss daher sorgfältig genutzt werden.

Empfohlene Artikel

Dies ist eine Anleitung zum Beispiel der rekursiven Funktion in C. Hier werden die Arbeitsweise, die Typen, die Speicherzuweisung und die Beispiele der rekursiven Funktion in C erläutert. Sie können auch die folgenden Artikel lesen, um mehr zu erfahren.

  1. Arrays in C-Programmierung
  2. Palindrom im C-Programm
  3. Muster in der C-Programmierung
  4. C gegen C ++
  5. Palindrom in JavaScript
  6. Anleitung zur Fibonacci-Serie In JavaScript