Eine wenig genutzte Konzept in C ist Funktion Rekursion. Eine rekursive Funktion ist einfach eine Funktion sich selbst aufruft . Rekursive Funktionen können in bestimmten Funktionen nützlich , kann aber in der Regel durch eine Schleife ersetzt. Zweck Rekursive Funktion
Eine rekursive Funktion kann verwendet werden, wenn eine Operation muss wiederholt auf eine Reihe von Daten durchgeführt werden kann. Zum Beispiel kann eine rekursive Funktion wiederholt eine mathematische Operation auf einen numerischen Wert , bis eine Bedingung erfüllt ist.
Erstellen einer rekursiven Funktion
Jede Funktion , die selbst nennt eine rekursive Funktion . Es gibt keine besonderen Anforderungen für eine Funktion selbst aufrufen , es kann so tun, als cait andere Funktion aufrufen würde . Als Beispiel ist das folgende eine rekursive Funktion , um die nächste Zahl in einer Fibonacci-Folge berechnen :
lange fib ( n lang )
{
if ( n < = 2) {
return 1; }
sonst
{
Rückkehr fib ( n - 1 ) + fib ( n - 2); }
}
Probleme mit Rekursion
Recursion hat mehrere mögliche Probleme, die vor dem Schreiben eine rekursive Funktion berücksichtigt werden sollten. Rekursive Funktionen können sehr ineffizient, es ist nicht nur ein Stapel von Overhead wiederholt Aufruf der Funktion , rekursive Funktionen können ganz einfach am Ende mit exponentiellen Laufzeiten je nachdem, wie sie geschrieben sind . Rekursive Funktionen führen auch ein Risiko in Form einer Stack-Überlauf , wenn die Anzahl der rekursiven Aufrufe ist zu hoch.
Recursion Vs. Iteration
meisten rekursiven Funktionen können als nicht- rekursive Funktion, die eine iterative Schleife verwendet implementiert werden. Dieser neigt dazu, effizienter und sicherer, aber in einigen Fällen kann schwieriger sein, zu schreiben und zu lesen.
Rekursive Funktionen am häufigsten verwendet werden beim Navigieren einer baumartigen Struktur , oder bei Verwendung Iteration würde das machen funktionieren viel komplexer. In den meisten anderen Fällen sollten Iteration stattdessen verwendet werden.