English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de lenguaje C

Control de flujo de lenguaje C

Funciones en C

Arreglos en C

Punteros en C

Cadenas en C

Estructura de lenguaje C

Archivo de lenguaje C

C Otro

Manual de referencia de C

Recursividad en C

En este tutorial, aprenderás a escribir funciones recursivas en C utilizando ejemplos de programación en C.

La función que se llama a sí misma se llama función recursiva y esta técnica se llama recursión.

¿Cómo funciona la recursión?

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}
int main()
{
    ... .. ...
    recurse();
    ... .. ...
}

La recursión continúa hasta que se cumplan ciertas condiciones para evitar la recursión.

Para evitar la recursión infinita, se puede realizar una llamada recursiva en una rama y en la otra no se realiza llamada recursiva.if ... else statement.

Ejemplo: Suma de números naturales utilizando recursión (o un método similar).

#include <stdio.h>
int sum(int n);
int main() {
    int number, result;
    printf("Por favor, introduzca un entero positivo: ");
    scanf("%d", &number);
    result = sum(number);
    printf("sum = %d", result);
    return 0;
}
int sum(int n) {
    if (n != 0)
        //La función sum() se llama a sí misma
        return n + sum(n-1); 
    else
        return n;
}

Resultado de salida

Por favor, introduzca un entero positivo:3
sum = 6

Inicialmente, se llama a sum() desde la función main() y se pasa number como parámetro.

Supongamos que el valor inicial de n en sum() es3. Durante la siguiente llamada a la función, se2Se pasa al sum() función. Este proceso continúa hasta que n es igual a 0.

Cuando n es igual a 0, el condicional if falla, se ejecuta la parte else y finalmente se devuelve el entero y a la función main().

Ventajas y desventajas de la recursividad

La recursividad hace que el programa sea elegante. Sin embargo, si la eficiencia es crucial, utilice bucles en lugar de recursividad, ya que la recursividad suele ser mucho más lenta.

Dicho esto, la recursividad es un concepto importante. Se utiliza a menudo en estructuras de datos y algoritmos. Por ejemplo, se utiliza recursivamente en problemas como el análisis de árboles.