Introducción a la función recursiva en C

El proceso de repetir los elementos de una manera similar a como era antes se conoce como recursión. Se dice que una función es recursiva si se llama dentro de sí misma. La recursión es compatible con el lenguaje de programación C. A continuación se presentan dos condiciones que son críticas para implementar la recursividad en C:

  • Una condición de salida: esta condición ayuda a la función a identificar cuándo salir de esa función. En caso de que no especifiquemos la condición de salida, el código entrará en un bucle infinito.
  • Cambiar el contador: cambiar el contador en cada llamada a esa función.

De esta manera, podemos implementar una función recursiva en el lenguaje de programación C. Estas funciones son útiles para resolver problemas matemáticos monetarios que requieren que se llame varias veces a un proceso similar. Ejemplos de tales problemas son calcular el factorial de varias generaciones de series de Fibonacci.

Sintaxis:

int fun(a1)
(
If(base_condition) return val;
fun(a2);
)

¿Cómo funciona la función recursiva en C?

Las funciones recursivas son la forma de implementar la ecuación en lenguaje de programación C. Se llama a una función recursiva con un argumento pasado, por ejemplo, n, la memoria en la pila se asigna a las variables locales, así como a las funciones. Todas las operaciones presentes en la función se realizan con esa memoria. La condición de salida se verifica si se cumple. Cuando el compilador detecta una llamada a otra función, inmediatamente asigna nueva memoria en la parte superior de la pila donde se crea una copia diferente de las mismas variables locales y la función. Ingrese el mismo proceso continúa.

Cuando la condición base devuelve verdadero, el valor particular pasado a la función de llamada. La memoria asignada a esa función se borra. de manera similar, el nuevo valor se calcula en la función de llamada y TI vuelve a la función de súper llamada. De esta forma, las llamadas recursivas a la función de eliminación alcanzan la primera función y toda la memoria de la pila se borra y se devuelve la salida. La condición base incase o la condición de salida no se especifican en la función, entonces las llamadas recursivas a la función pueden conducir a un bucle infinito.

Ejemplo de función recursiva

Ahora veremos los ejemplos de la función recursiva en C

Código:

#include
int fun(int n)
(
if(n==1) return 1 ; //exit or base condition which gives an idea when to exit this loop.
return n*fun(n-1); //function is called with n-1 as it's argument .
//The value returned is multiplied with the argument passed in calling function.
)
int main()(
int test=4;
int result =0;
result =fun(test);
printf("%d", result);//prints the output result.
)

Salida:

Explicación del código anterior

El ejemplo anterior es encontrar el factorial de un número. Cuando la función principal llama a fun (4), primero se verifica la condición de salida (4 == 1) y luego se llama a 4 * fun (3). Nuevamente se verifica la condición base (3 == 1). Del mismo modo, devolverá 3 * se llama fun (2) y esto continúa hasta 2 * se llama fun (1) y donde cumple la condición base y devuelve 1, luego la función de llamada devuelve 2 * 1 y luego, 3 * 2 * 1 y desde la primera llamada se devuelve 4 * 3 * 2 * 1. De este modo, la función principal almacena 24 e imprime eso en la salida.

Asignación de memoria de la función recursiva

Cada llamada a una función en lenguaje c da como resultado la asignación de memoria en la parte superior de una pila. Cuando se llama una función recursiva, se le asigna memoria en la parte superior de la memoria que se ha asignado a la función de llamada con todas las diferentes copias de variables locales que se crean para cada llamada a la función.
¿Cuál es la condición base alcanzada, la memoria asignada a la función se destruye y el puntero vuelve a la función de llamada? este proceso se repite, luego la primera función de llamada y, por último, la memoria de la pila se vacía.

En el ejemplo anterior para calcular el factorial de un número a continuación es el escenario para la asignación de memoria.

Paso 1

Paso 2

Paso 3

Etapa 4

Paso - 5

Paso - 6

Paso - 7

Paso - 8

Paso - 9

Tipos de recursión

Hay dos tipos de recursividad en la programación en C que se detallan a continuación:

1. Recursión de cola y sin cola

El tipo de recursión indicado anteriormente se explica a continuación:

  • Recursión de la cola

Es un tipo de llamada de recursión de función recursiva en la función que es la última acción que se realiza en la definición de la función. Significa que la llamada recursiva ocurre después de que se implementa todo lo demás lógico en la función.

El uso de una recursión de cola en nuestro programa en hansis el rendimiento del programa y también reduce el uso de memoria de esa función. Esto es así porque a medida que se ha implementado otra lógica en la función, la memoria asignada a la función de llamada puede eliminarse de la pila y reutilizarse.

Código:

int fun1(n)(
printf(“the result is “);
return fun1(n-1);
)
void main()
(
fun1(4);
)

  • Recursión sin cola

Este tipo de recursivo collage recursivo realizado en el medio de la definición de la función. La recursión de los pantalones de los hombres se completa y los valores vuelven a la función de llamada; hay más pasos que realizar, por lo que no se puede borrar la memoria.

Código:

int fun1(n)(
printf(“the result is “);
return n* fun1(n-1);
)
void main()(
fun1(4);
)

2. Recursión directa e indirecta

El tipo de recursión indicado anteriormente se explica a continuación:

  • Recursión indirecta

Se dice que la recursión indirecta ocurre cuando una función particular se llama de manera recursiva medio de otra función.

Código:

int fun1()(
fun2();
)
int fun2()(
fun1(); // calling the procedure recursively using another function.
)
void main()(
fun1();
)

  • Recursión directa

Se dice que la recursión directa ocurre cuando la llamada recursiva a la función se realiza dentro de su propia definición.

Código:

int fun1()(
fun1();
)
void main()(
fun1();
)

Conclusión

Se puede concluir fácilmente que las funciones recursivas son más importantes para resolver problemas matemáticos que requieren un método similar, toda la lógica se implementa repetidamente hasta que se cumpla una condición de salida. Muchos problemas, como las torres de Hanoi, los recorridos de los árboles, el cálculo de la profundidad de los gráficos.

Es importante mencionar una condición base para la función recursiva. Los requisitos de memoria y tiempo son mayores para el programa recursivo en comparación con los iterativos, por lo que deben usarse con cuidado.

Artículos recomendados

Esta es una guía de ejemplo de la función recursiva en C. Aquí discutimos el trabajo, los tipos, la asignación de memoria y ejemplos de la función recursiva en C. También puede consultar los siguientes artículos para obtener más información

  1. Arreglos en programación en C
  2. Palindrome en el Programa C
  3. Patrones en programación C
  4. C vs C ++
  5. Palindrome en JavaScript
  6. Guía de la serie Fibonacci en JavaScript