Está en la página 1de 10

Arboles

¿Que es un árbol?
Son una estructura de datos de no lineal, atendiendo más a una
estructura de tipo jerárquico. Los árboles son, sin duda, una de las
estructuras de datos no lineales, empleadas en informática, tanto para
resolver problemas de hardware como de software. Los árboles de
directorios son organizaciones bastante empleadas por cualquier usuario
o programador de una computadora.

2
¿Que es la recursividad?

● Un programa o subprograma que se llama a sí mismo se dice que es


recursivo.

● El concepto de recursividad está ligado, en los lenguajes de


programación, al concepto de procedimiento o función. Un
procedimiento o función es recursivo cuando durante una
invocación a él puede ser invocado a su vez él mismo.

● La recursividad es una de las formas de control más importantes


en la programación. Los procedimientos recursivos son la forma
más natural de representación de muchos algoritmos.

3
¿Que se necesita?

◉ Para que un algoritmo recursivo funcione, los subproblemas más


pequeños eventualmente deben llegar al caso base.
◉ Podemos extraer la idea de la recursión en dos reglas sencillas:
1. Cada llamada recursiva debe ser sobre una instancia más pequeña del
mismo problema, es decir, un subproblema más pequeño.
2. Las llamadas recursivas eventualmente deben alcanzar un caso base, el
cual se resuelve sin más recursividad.

4
¿Como funciona?

1. El procedimiento se llama a sí mismo


2. El problema se resuelve, resolviendo el mismo problema pero de
tamaño menor
3. La manera en la cual el tamaño del problema disminuye asegura
que el caso base eventualmente se alcanzará.

5
Aplicaciones

◉ La recursividad es un método poderoso usado en inteligencia


artificial, su poder es que algunos conceptos complejos pueden
expresarse en una forma simple.
◉ Las fórmulas recursivas pueden aplicarse a situaciones tales
como prueba de teoremas, solución de problemas
combinatorios, algunos acertijos, etc.

6
Ventajas y desventajas

Ventajas:
◉ Soluciones simples, claras .
◉ Soluciones elegantes.
◉ Soluciones a problemas complejos.
Desventajas
◉ INEFICIENCIA
◉ Sobrecarga asociada con las llamadas a subalgoritmos

7
Ejemplos recursividad directa

FACTORIAL FIBONACCI
int factorialr(int x){ int fibonaccir(int x){
int a; int a;
if(x==1)//Caso base if(x==1 ||
a=1; x==2)//Caso base

else a=1;

a = x * else
factorialr(x-1); a =
return a; fibonaccir(x-1) +
fibonaccir(x-2);
}
return a;
}

8
Analisis

9
Recursividad indirecta
boolean impar (int num){
if (num == 0) Par(2) Impar(2)
return false;
else
return par(num-1); Impar(1) Par(1)
}
boolean par (int num) {
if (num == 0)
return true; Par(0) Impar(0)
else
return impar(num-1); Verdadero Falso
}

10

También podría gustarte