En este tutorial, aprenderá a escribir funciones recursivas en programación C con la ayuda de un ejemplo.
Una función que se llama a sí misma se conoce como función recursiva. Y esta técnica se conoce como recursividad.
¿Cómo funciona la recursividad?
void recurse () (… recurse ();…) int main () (… recurse ();…)
La recursividad continúa hasta que se cumple alguna condición para prevenirla.
Para evitar la recursividad infinita, se puede usar la instrucción if… else (o un enfoque similar) donde una rama hace la llamada recursiva y otra no.
Ejemplo: suma de números naturales mediante recursividad
#include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; )
Salida
Ingrese un número entero positivo: 3 suma = 6
Inicialmente, sum()
se llama desde la main()
función con el número pasado como argumento.
Supongamos que el valor de n dentro sum()
es 3 inicialmente. Durante la siguiente llamada a la función, se pasa 2 a la sum()
función. Este proceso continúa hasta que n es igual a 0.
Cuando n es igual a 0, la if
condición falla y la else
parte se ejecuta devolviendo la suma de los enteros en última instancia a la main()
función.
Ventajas y desventajas de la recursividad
La recursividad hace que el programa sea elegante. Sin embargo, si el rendimiento es vital, utilice bucles en su lugar, ya que la recursividad suele ser mucho más lenta.
Dicho esto, la recursividad es un concepto importante. Se utiliza con frecuencia en la estructura de datos y algoritmos. Por ejemplo, es común utilizar la recursividad en problemas como el cruce de árboles.