Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FUNCIONES RECURSIVAS
Ahora veamos otra funcion un poco mas compleja
Si buscamos la imagen de 0 entonces su
imagen =1
Que pasa con f(6)
Cumple con la regla pero vemos que la
imagen llama nuevamente a la funcion
Busquemos cual es la imagen de f(6)
f(6)=?
F(6)=6*f(5)
Realizar el procedimiento:
El procedimiento ejecutado es un procedimiento recursivo porque recurre a utilizar la misma
funcion para encontrar el valor de la imagen entonces para buscar x yo llamo a la function n veces
y llegamos a un punto donde ya no se llama a la funcion y este el el punto de control para no
volver a llamar a la funcion.
2.1. Definicin
Un mtodo recursivo es un mtodo que se llama as mismo, ya sea
directa o indirectamente, a travs de otro mtodo.
(Deitel, H. M. & Deitel P. J., 2004)
Un mtodo parcialmente definido en trminos de s mismo, ya sea
directa o indirectamente, a travs de otro mtodo.
(Weiss, M. A)
U2. Recursividad.
2.1. Definicin
SI
Caso base
NO
Parte
recursiva
U2. Recursividad.
Recursin
Recursin
Recursin
Recursin
simple
mltiple
cruzada o indirecta
anidada
U2. Recursividad.
U2. Recursividad.
Ejemplo de Casos
Factorial (forma iterativa)
-- Caso Base
factorial = 1;
factorial =1
-- Parte Recursiva
--)
i = n i >=
1
i -SI
factorial *= i;
factorial *= i
U2. Recursividad.
Ejemplo
de Casos
2.3. Ejemplo
de Casos
Factorial (forma recursiva)
int factorial (int n){
if (n <= 1)
return 1;
else
return (n * factorial ( n-1
));
}
n <= 1
NO
return
(n * factorial (n-1))
U2. Recursividad.
SI
return 1
FUNCIONES RECURSIVAS
FACTORIAL (3)
N es 3
FACTORIAL
FACTORIAL (2)
3*
Retorno 6
N es 2
FACTORIAL
FACTORIAL (1)
2*
Retorno 2
N es 1
FACTORIAL
FACTORIAL (0)
1*
Retorno 1
N es 0
FACTORIAL
1
Retorno 1
Ejercicio
Encuentre el error en el siguiente mtodo recursivo y explique
cmo corregirlo:
int suma(int n)
{
if (n == 0)
return 0;
else
return n + suma (n);
}
U2. Recursividad.
Recursividad
Definicin
-
Es una Tcnica
que permite que
una funcin se
llame
a
si
misma.
Definition
- Un algoritmo es
recursivo
si
al
estar encapsulado
en una funcin es
llamado desde la
misma funcin por
lo menos 1 vez.
Al menos
2 elementos
Caso Base
Evita
que
el
algoritmo
sea
infinito.
El
problema
puede resolverse
sin tener que
hacer uso una
nueva llamada a
si mismo.
Paso
Recursivo
Relaciona
el
resultado
del
algoritmo en base
a los resultados
de
casos
mas
simples.
Se
hacen
llamadas
a
la
misma
funcin
pero cada vez
mas prximas al
caso base.
} El uso de recursividad
solucin iterativa.
se
codifican
mas
fcil
Backtracking = Fuerza Bruta = Vuelta Atras. Divide la solucin en pasos, en cada uno de los
cuales hay una serie de opciones que ha que probar de forma sistemtica. En cada paso se
busca una posibilidad o solucin o solucin aceptable.
Si se encuentra se una solucin valida pasa a decidir el paso siguiente.
Si no se encuentra una solucin aceptable, se retrocede hasta la ltima solucin aceptable
encontrada y se elige una opcin distinta a la anterior. La recursividad se utiliza para poder
retroceder hasta encontrar una solucin aceptable.
Ejemplos: Juegos de tablero, laberintos, etc.
2.
3.
4.
Escriba un IF
b.
problema ?
Prctica (Equipo)
De los siguientes problemas resueltos de forma iterativa,
encontrar su solucin recursiva mediante codificacin:
1. Fibonacci (n-1) + (n-2)
2. Conversin de un nmero decimal a binario (n/2, n%2)
3. Potencia (base, exponente)
U2. Recursividad.
Prctica (Equipo)
Fibonacci
Prctica (Equipo)
Conversin Decimal a Binario
U2. Recursividad.
Prctica (Equipo)
Elevar a una potencia
ITERACIN
Instruccin de repeticin explcita.
Termina cuando falla la condicin.
Repeticin controlada por contador.
Infinita cuando la condicin nunca
se vuelve falsa.
U2. Recursividad.
Ventajas
Menos lneas de cdigo.
Refleja el problema con ms naturalidad.
Produce un programa ms fcil de entender y depurar.
U2. Recursividad.
Desventajas
Tiempo de procesador.
Espacio en memoria, consume memoria adicional.
U2. Recursividad.
CONCLUSIONES
Programacin en C
30
31