Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <stdio.h>
main()
int n;
scanf("%d", &n);
if (n <= 1)
return(1);
else
}
Cuando ejecutamos un programa recursivo, las llamadas recursivas no se ejecutan
inmediatamente. Lo que se hace es colocarlas en una pila hasta que la condición de término se
encuentra. Entonces se ejecutan las llamadas a la función en orden inverso a como se
generaron, como si se fueran sacando de la pila, por tanto el orden sería algo así:
1º n! = n* (n-1)!
........ ...............
Último 2! = 2 * 1!
1º 1!=1
2º 2! = 2 * 1! = 2 * 1 = 2
3º 3! = 3 * 2! = 3 * 2 = 6
........ ...............
La característica típica que comparten todas las funciones recursivas es que se ejecutan en un
orden inverso. Cada vez que se realiza una nueva llamada a la función, se crea un conjunto
distinto de variables locales. Estas variables locales tienen los mismos nombres que las
declaradas en la función, pero representan valores diferentes en cada ejecución. Estos
conjuntos de valores se almacenan en la pila y se utilizan cuando el proceso recursivo se
desenrolla, es decir, cuando las llamadas a la función se retiran de la pila y continúa su
ejecución.
El compilador utiliza una nueva área de la pila para almacenar las variables en cada llamada
recursiva, lo que ralentiza la ejecución de la función y puede llevar a problemas de
agotamiento de la memoria de la pila. Por lo tanto, si es posible, se recomienda calcular las
funciones recursivas de forma iterativa, ya que este enfoque suele ser más eficiente y evita los
problemas asociados con el uso intensivo de la pila.
Ejemplo 2: Mostramos a continuación la versión no recursiva del factorial.
int t, res;
res=1;
res*=t;
return(res);
La versión no recursiva factiterativo() debe estar clara. Utiliza un bucle que empieza en 1 y
termina en n y que progresivamente multiplica cada número por el producto móvil.
Fuente: https://ccia.ugr.es/~jfv/ed1/c/cdrom/cap6/cap66.htm
http://blog.espol.edu.ec/ccpg1001/funciones-recursivas/
Ventajas:
Desventajas: