Latest web development tutorials

C recursiva

La recursividad se refiere a la definición del método de función que se utiliza en la propia función.

Por ejemplo:
Había una vez una montaña, la montaña había un templo, el templo tiene un viejo monje, fue contar historias a joven monje él! ¿Qué historia es? "Había una vez una montaña, la montaña había un templo, el templo tiene un viejo monje, fue contar historias a joven monje que! ¿Qué historia es? 'Había una vez una montaña, la montaña había un templo, el templo tiene un viejo monje, se una historia que el joven monje que! ¿Qué historia es? ...... ''

Sintaxis es la siguiente:

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

int main()
{
   recursion();
}

recursividad soporte de lenguaje C, es decir, una función puede llamar a sí mismo. Sin embargo, cuando se utiliza recursión, el programador debe señalarse que la definición de una función sale de las condiciones, de lo contrario ir en un bucle infinito.

función recursiva en la solución de muchos problemas matemáticos jugó un papel crucial, como el cálculo del factorial de un número, generar número de Fibonacci, y así sucesivamente.

número factorial

En el siguiente ejemplo se utiliza una función recursiva para calcular el factorial de un número dado:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

15 的阶乘为 1307674368000.000000

número de Fibonacci

Fibonacci el siguiente ejemplo se utiliza una función recursiva para generar un número determinado de columnas:

#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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

0	1	1	2	3	5	8	13	21	34