C Rekursion
C-Rekursion
In diesem Tutorial lernen Sie anhand eines Beispiels, rekursive Funktionen in der C-Programmierung zu schreiben.
Eine Funktion, die sich selbst aufruft, wird als rekursive Funktion bezeichnet. Und diese Technik wird als Rekursion bezeichnet.
Wie funktioniert die Rekursion?
void recurse() { ... .. ... recurse(); ... .. ... } int main() { ... .. ... recurse(); ... .. ... }
Die Rekursion wird fortgesetzt, bis eine Bedingung erfüllt wird, um sie zu verhindern.
Um eine unendliche Rekursion zu verhindern, kann die if...else-Anweisung (oder ein ähnlicher Ansatz) verwendet werden, wenn eine Verzweigung den rekursiven Aufruf durchführt und die andere nicht.
Beispiel:Summe natürlicher Zahlen mit Rekursion
#include <stdio.h>
int sum(int n);
int main() {
int number, result;
printf("Enter a positive integer: ");
scanf("%d", &number);
result = sum(number);
printf("sum = %d", result);
return 0;
}
int sum(int n) {
if (n != 0)
// sum() function calls itself
return n + sum(n-1);
else
return n;
}
Ausgabe
Enter a positive integer:3 sum = 6
Zunächst der sum()
wird von der main()
aufgerufen Funktion mit Zahl als Argument übergeben.
Angenommen, der Wert von n innerhalb von sum()
ist anfangs 3. Beim nächsten Funktionsaufruf wird 2 an sum()
übergeben Funktion. Dieser Vorgang wird bis n fortgesetzt ist gleich 0.
Wenn n gleich 0 ist, die if
Bedingung schlägt fehl und der else
Teil wird ausgeführt und gibt die Summe der Ganzzahlen schließlich an main()
zurück Funktion.
Vor- und Nachteile der Rekursion
Rekursion macht Programm elegant. Wenn die Leistung jedoch entscheidend ist, verwenden Sie stattdessen Schleifen, da die Rekursion normalerweise viel langsamer ist.
Davon abgesehen ist Rekursion ein wichtiges Konzept. Es wird häufig in Datenstrukturen und Algorithmen verwendet. Beispielsweise ist es üblich, Rekursion bei Problemen wie Baumdurchquerung zu verwenden.
C Sprache
- C# Hello World – Ihr erstes C#-Programm
- C#-Schlüsselwörter und Bezeichner
- C#-Variablen und (primitive) Datentypen
- C#-Operatoren
- C# Bitwise- und Bit-Shift-Operatoren
- C# Grundlegende Ein- und Ausgabe
- C#-Ausdrücke, -Anweisungen und -Blöcke (mit Beispielen)
- C#-Kommentare
- C#-switch-Anweisung
- C# ternärer (? :) Operator