In Computer -Programmierung erfolgt Rekursion , wenn eine Funktion oder Prozedur - in anderen Worten, eine Folge von Anweisungen zur Durchführung einer bestimmten Funktion - nennt sich , entweder direkt oder indirekt ? . Die Funktion oder eine Prozedur ändert den Wert des Parameters ( n) geleitet, um es den ersten Aufruf und nennt sich mit dem neuen Wert (en) . Factorials
Das klassische Beispiel für Rekursion beinhaltet Computing Fakultäten . Eine Fakultät ist das Produkt aus einem bestimmten positive ganze Zahl von allen geringerer ganze Zahlen multipliziert . Die Fakultät von 5 ist 5 * 4 * 3 * 2 * 1, ist die Fakultät 4 4 * 3 * 2 * 1 und so weiter. Die Fakultät einer Zahl gleich dieser Zahl durch die Fakultät der Zahl unmittelbar darunter multipliziert . In anderen Worten ist faktoriellen (5) gleich 5 * faktoriellen (4) , Fakultät (4) ist das gleiche wie 4 * faktoriellen (3) und so weiter, so dass eine einfache Fakultätsfunktion als geschrieben werden kann :
int Fakultät (int n ) {return n * Fakultät ( n - 1 );}
Basis-Szenario
Das Problem mit dieser einfachen Funktion , jedoch ist, dass es keine Basis Fall oder Bedingung , um ihm mitzuteilen , wann man aufhören muss. Wie es aussieht, würde die Funktion weiterhin selbst anrufen, wenn n Null erreicht und darüber hinaus in den negativen Zahlen , wieder unsinnige Fakultäten . In der Realität muss ein Fakultäts-Funktion zu stoppen, wenn n = 1, so eine echte Fakultätsfunktion als geschrieben werden konnte :
int Fakultät (int n ) {if ( n == 1) { return 1; } else {return n * Fakultät ( n - 1 );}}
In Englisch, prüft die Funktion die Anzahl an sie übergeben als Parameter und , wenn die Zahl 1 , 1 zurückgegeben . Andernfalls wird die Funktion gibt die Anzahl der Fakultät der Zahl minus eins multipliziert .
Programm Stapel
Alle rekursive Programme müssen einen Tiefpunkt , oder Base haben Fall, in dem der Betrieb ist so trivial , dass eine Antwort direkt zurückgegeben werden können. Rekursion funktioniert, indem , oder Schieben und Entfernen , Knallen , einzelne Frames zu und von einer Datenstruktur als Programm Stapel bekannt. Es gibt nur eine begrenzte Menge an Speicherplatz auf dem Programm -Stack , so , ohne eine Basis Fall würde ein rekursives Programm einfach weiterhin laufen, bis der Stapel übergelaufen .
Pros & Cons
< br >
Rekursion ist ein schwer zu verstehen, denn es ist nicht intuitiv und erscheinen auf den ersten Blick , um kreisförmige oder falsche Logik einzubeziehen. Laut IBM ist Rekursion selten von Programmierern in imperativen Programmiersprachen verwendet - die nicht eine explizite Abfolge von Schritten durchführen - weil sie glauben, es ist langsam und Abfälle Raum . Allerdings, wenn es richtig umgesetzt , ist eine leistungsfähige Programmiersprache Rekursion Technik, die einige Programmieraufgaben rationalisieren können .