Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7C Ejemplos
7C Ejemplos
Solucin recursiva
static int fibonacci (int n)
{
if ((n == 0) || (n == 1))
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}
Solucin iterativa
static int fibonacci (int n)
{
int actual, ant1, ant2;
ant1 = ant2 = 1;
if ((n == 0) || (n == 1)) {
actual = 1;
} else
for (i=2; i<=n; i++) {
actual = ant1 + ant2;
ant2 = ant1;
ant1 = actual;
}
}
return actual;
}
Clculo recursivo de fibonacci(5)
Recursividad - Java
-9-
Fernando Berzal
Ejemplo: Combinaciones
De cuntas formas se pueden seleccionar
m elementos de un conjunto de n?
Si cogemos dos letras del conjunto {A,B,C,D,E}
podemos obtener 10 parejas diferentes:
{A, B}
{A, C}
{B, C}
{A, D}
{B, D}
{C, D}
{A, E}
{B, E}
{C, E}
{D, E}
n n 1 n 1
=
+
m m m 1
n
0 1 2 3 4 5
0
1
2
3
4
5
m
0 C0 C0 C0 C0 C0 C0
1 C 2C 3 C 4 C 5 C
1
1
1
1
1
1
2
2C 3 C 4 C 5 C
2
2
2
2
3 C 4 C 5 C 6C
3
3
3
3
4C 5C
4
4
Recursividad - Java
- 10 -
Fernando Berzal
Implementacin recursiva:
static int combinaciones (int n, int m)
{
if ((m == 0) || (m == n))
return 1;
else
return combinaciones(n-1, m)
+ combinaciones(n-1, m-1);
}
n!
Recursividad - Java
- 11 -
Fernando Berzal
Solucin recursiva:
static void hanoi
(int n, int inic, int tmp, int fin)
{
if (n > 0) {
// Mover n-1 discos de "inic" a "tmp".
// El temporal es "fin".
hanoi (n-1, inic, fin, tmp);
// Mover el que queda en "inic" a "fin"
System.out.println(inic+->+fin);
// Mover n-1 discos de "tmp" a "fin".
// El temporal es "inic".
hanoi (n-1, tmp, inic, fin);
}
}
Recursividad - Java
- 12 -
Fernando Berzal
Segn la leyenda, los monjes de un templo tenan que mover una pila
de 64 discos sagrados de un sitio a otro. Slo podan mover un disco al
da y, en el templo, slo haba otro sitio en el que podan dejarlos,
siempre ordenados de forma que los mayores quedasen en la base.
El da en que los monjes realizasen el ltimo movimiento,
el final del mundo habra llegado en cuntos das?
Recursividad - Java
- 13 -
Fernando Berzal