Professional Documents
Culture Documents
Clase terica 6
Recursividad / Recursin
Definicin: Un algoritmo es recursivo si se encuentra
definido en trminos de s mismo.
Contenido
Recursividad
rboles binarios
Ejemplo
Salida de recursin
import java.util.*;
Devuelve 4*6=24
factorial(4), N=4
static long factorial(int N) {
if (N == 1)
return 1;
else
return (N * factorial(N-1));
}
Devuelve 3*2=6
Llama a
factorial(3), N=3
Devuelve 2*1 = 2
Llama a
factorial(2), N=2
Devuelve 1
Llama a
factorial(1), N=1
Ejemplo
Llamados mltiples
import java.util.*;
Llamados mltiples
Ejemplo
//...
System.out.println(fib(x));
Devuelve 2+1=3
Suponiendo x=5
fib(5), N=5
Llama a
fib(4), N=4
Llama a
Devuelve 0
Devuelve 1
fib(2), N=2
fib(1), N=1
Devuelve 0
Llama a
fib(2), N=2
Llama a
Devuelve 1
fib(2), N=2
fib(3), N=3
fib(3), N=3
Devuelve 1
Devuelve 1+0=1
import java.util.*;
Devuelve 1+0=1
Devuelve 1+1=2
fib(1), N=1
}
Qu es eso de rboles?
Expectativa
Definicin y terminologa
Un rbol es una estructura de datos con relaciones
jerrquicas entre sus componentes. Su principal
caracterstica es que tales relaciones son de uno a muchos,
es decir, no son necesariamente lineales (de uno a uno)
como en el caso de las listas enlazadas y generalmente son
unidireccionales.
Realidad
M
D
H
O
Terminologa
Terminologa
Terminologa
Terminologa
rbol binario
rbol binario
10
20
15
12
25
27
System.out.prinln(n.elm);
if (n.hijoIzquierdo != null)
inOrder(n.hijoIzquierdo);
if (n.hijoIzquierdo != null)
preOrder(n.hijoIzquierdo);
System.out.prinln(n.elm);
if (n.hijoDerecho != null)
preOrder(n.hijoDerecho);
if (n.hijoDerecho != null)
inOrder(n.hijoDerecho);