C Rekursion

Rekursion bezeichnet die Methode, die Funktion selbst innerhalb der Definition einer Funktion zu verwenden.

Zum Beispiel:
Es war einmal ein Berg, und in dem Berg war ein Tempel, und in dem Tempel erzählte ein alter Mönch einem jungen Mönch eine Geschichte! Was war die Geschichte? "Es war einmal ein Berg, und in dem Berg war ein Tempel, und in dem Tempel erzählte ein alter Mönch einem jungen Mönch eine Geschichte! Was war die Geschichte? 'Es war einmal ein Berg, und in dem Berg war ein Tempel, und in dem Tempel erzählte ein alter Mönch einem jungen Mönch eine Geschichte! Was war die Geschichte? ...'"

Das Syntaxformat lautet wie folgt:

void recursion() { Anweisungen; ... ... ... recursion(); /*Eine Funktion ruft sich selbst auf*/ ... ... ... } int main() { recursion(); }

Flussdiagramm:

Die Sprache C unterstützt Rekursion, das heißt, eine Funktion kann sich selbst aufrufen. Bei der Verwendung von Rekursion müssen Programmierer jedoch darauf achten, eine Bedingung für den Ausstieg aus der Funktion zu definieren; andernfalls gerät sie in eine Endlosschleife.

Rekursive Funktionen spielen eine entscheidende Rolle beim Lösen vieler mathematischer Probleme, wie zum Beispiel bei der Berechnung der Fakultät einer Zahl, der Erzeugung der Fibonacci-Folge und so weiter.

Fakultät einer Zahl

Das folgende Beispiel verwendet eine rekursive Funktion, um die Fakultät einer gegebenen Zahl zu berechnen:

Beispiel

#include <stdio.h> double factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 15; printf("Fakultät von %d ist %f\n", i, factorial(i)); return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

15 的阶乘为 1307674368000.000000

Fibonacci-Folge

Das folgende Beispiel verwendet eine rekursive Funktion, um die Fibonacci-Folge für eine gegebene Zahl zu erzeugen:

Beispiel

#include <stdio.h> int fibonaci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonaci(i-1) + fibonaci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d\t\n", fibonaci(i)); } return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

0    
1    
1    
2    
3    
5    
8    
13    
21    
34
Weitere Erweiterungen