Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7B Recursividad
7B Recursividad
Utilidad
Cuando la solucin de un problema se puede expresar en
trminos de la resolucin de un problema de la misma naturaleza,
aunque de menor complejidad.
Divide y vencers:
Un problema complejo se divide en otros problemas ms sencillos
(del mismo tipo)
Slo tenemos que conocer la solucin no recursiva para algn
caso sencillo (denominado caso base) y hacer que la divisin de
nuestro problema acabe recurriendo a los casos base que hayamos
definido.
Como en las demostraciones por induccin, podemos considerar
que tenemos resuelto el problema ms simple para resolver el
problema ms complejo (sin tener que definir la secuencia exacta de
pasos necesarios para resolver el problema).
Recursividad - Java
-4-
Fernando Berzal
Ejemplo
Cuntas formas hay de colocar n objetos en orden?
- Podemos colocar cualquiera de los n objetos en la primera
posicin.
- A continuacin, colocamos los (n-1) objetos restantes.
- Por tanto: P(n) = n P(n-1) = n!
fact(3)
fact(4) n = 3
n=4
n=4
fact(1)
n=0
fact(2)
n=1
n=1
n=2
n=2
1
1
n=1
2
n=2
n=2
n=2
6
n=3
n=3
n=3
n=3
n=3
n=3
n=4
n=4
n=4
n=4
n=4
n=4
24
n=4
tiempo
Recursividad - Java
-5-
Fernando Berzal
Ejemplo
static int potencia (int x, int n)
{
if (n==0)
// Caso base
return 1;
else
// Caso general
return x * potencia(x,n-1);
}
n=0
x=5
n=1
n=1
n=1
x=5
x=5
x=5
n=2
n=2
n=2
n=2
n=2
x=5
x=5
x=5
x=5
x=5
25
n=3
n=3
n=3
n=3
n=3
n=3
n=3
x=5
x=5
x=5
x=5
x=5
x=5
x=5
125
Clculo de 53
Recursividad - Java
-6-
Fernando Berzal
Recursividad - Java
-7-
Fernando Berzal
-8-
Fernando Berzal