Latest web development tutorials

C rekursive

Rekursion bezieht sich auf die Definition der Methodenfunktion in der Funktion selbst verwendet.

Zum Beispiel:
Es war einmal ein Berg, der Berg war ein Tempel, hat der Tempel einen alten Mönch, wurde Geschichten junger Mönch erzählt es! Was für eine Geschichte ist es? "Es war einmal ein Berg, der Berg war ein Tempel, der Tempel einen alten Mönch hat, wurde Geschichten junger Mönch erzählt es! Was für eine Geschichte ist es?" Es war einmal ein Berg, der Berg war ein Tempel, hat der Tempel einen alten Mönch, ist eine Geschichte zu dem jungen Mönch es! Was für eine Geschichte ist es? ...... ''

Die Syntax ist wie folgt:

void recursion()
{
   recursion(); /* 函数调用自身 */
}

int main()
{
   recursion();
}

C Sprachunterstützung Rekursion, das heißt, eine Funktion kann selbst nennen. Wenn jedoch Rekursion verwendet wird, sollte der Programmierer beachten, daß die Definition einer Funktion von den Bedingungen verlßt, sonst wird es in eine Endlosschleife.

Rekursive Funktion viele mathematische Probleme bei der Lösung eine entscheidende Rolle gespielt, wie die Berechnung der Fakultät einer Zahl, Fibonacci-Zahl erzeugen, und so weiter.

Anzahl faktorieller

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

#include <stdio.h>

double factorial(unsigned int i)
{
   if(i <= 1)
   {
      return 1;
   }
   return i * factorial(i - 1);
}
int  main()
{
    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));
    return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

15 的阶乘为 1307674368000.000000

Fibonacci-Zahl

Fibonacci Das folgende Beispiel einer rekursiven Funktion verwendet, um eine gegebene Anzahl von Spalten zu erzeugen:

#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, erzeugt es die folgenden Ergebnisse:

0	1	1	2	3	5	8	13	21	34