SlideShare uma empresa Scribd logo
1 de 33
C.E.C.O N° 4 (Algoritmos y lenguajes)Recursividad Integrantes: ,[object Object]
Cortés, Cristian
Diaz, María Rosa
Oliva, Cristian
Páez, María Vanesa,[object Object]
El proceso de resolver un problema reduciéndolo a uno o mas sub problemas.
 Un proceso es recursivo si forma parte de si mismo.,[object Object]
Recursividad Indirecta.,[object Object]
Reglas para realizar un Algoritmo Caso Base. Progreso. Credibilidad. Interés compuesto.
Ventajas e Inconvenientes ,[object Object]
El principal inconveniente es la ineficiencia tanto en tiempo como en memoria.,[object Object]
Las fórmulas recursivas pueden aplicarse a situaciones Matemáticas, etc.
Existen ciertas estructuras cuya definición es recursiva.,[object Object]
La recursión una estructura de selección.,[object Object]
La zona donde se guardan los datos: pila (utilizada para llamadas recursivas).,[object Object]
Se crea en la pila de un registro de activación o entorno “E”.
Almacena constantes, variables locales y parámetros formales.
Estos registros se van apilando conforme se llaman sucesivamente desde una función a otras.
Cuando finaliza la ejecución, se va liberando el espacio.,[object Object]
4!=4* 3! Ejemplo: 3!= 3*2! 2!= 2 *1! 1!= 1 *0! //Solución no estructuradaint factorial (int n) {if (n==0)                //Caso base    return 1;else                      //Caso General    return n*factorial(n-1);} 0!= 1
4!=4* 3! 4!=4* 3! 4!=4* 3! 3!= 3*2! 3!= 3*2! 3!= 6 2!= 2 *1! 2!= 2  1!= 1 *1 4!=24
[object Object],Int desde,hasta,medio,elemento,posicion; // desde y       // hasta indican los límites del array que se está mirando. int array[N];   // Dar valor a elemento.   for(desde=0,hasta=N-1;desde<=hasta;) { if(desde==hasta) // si el array sólo tiene un elemento:    { if(array[desde]==elemento) // si es la solución: posicion=desde; // darle el valor. else// si no es el valor: posicion=-1; // no está en el array.  break; // Salir del bucle.     } medio=(desde+hasta)/2; // Divide el array en dos. if(array[medio]==elemento) // Si coincide con el central:    { posicion=medio; // ese es la solución break; // y sale del bucle.     } else if(array[medio]>elemento) // si es menor: hasta=medio-1; // elige el array izquierda. else// y si es mayor:       desde=medio+1; // elige el array de la derecha.  } 2 3 4 5 6 7 8 1 9 2 3 4 1 3 4 Valor a buscar 3
[object Object],int producto (int a, int b) { if (b==0) return (0); else return (a+ producto (a, b-1)); } Producto(3,2)= 3 + producto(3,1) Producto (3,2)= 3 + 3 Producto(3,2)=6 Producto(3,1)= 3 + producto(3,0)                            = 3 + 0
Recursividad en Listas La estructura de listas es recursiva cuando (el “resto” de una lista es a su vez una lista), la mayoría de los programas sobre listas serán recursivos de forma natural. Ejemplo: Supongamos que tenemos la lista de las personas que asistirán a un a reunión y queremos averiguar si una determinada persona irá a ella. En Prolog seria: miembro(X, L)" que significa X es miembro de la lista L. 1. miembro(X, [X|Y]). 2. miembro(X, [Y|Z]) :- miembro(X,Z). Una posible pregunta al programa es: ? miembro(pedro, [maría, pedro, juan, ana]). ? miembro(pedro, [maria, pedro, juan, ana]). 2. {X1®pedro, Y1®maria, Z1® [pedro,juan,ana]} ? miembro(pedro, [pedro, juan, ana]). 1. {X2®pedro, Y2® [juan,ana]} ı  EXITO (la contestación es si)
Definición de Árbol A A C C B B G G E E F F D D Un árbol (tree) es un tipo de dato abstracto (T.D.A.) que consta de un conjunto finito T de nodos y una relación R (paternidad) entre los nodos tal que:   Hay un nodo, especialmente designado, llamado la raíz del árbol T.
Códigos de Árbol A A C C B B G G E E F F D D En Prolog seria: es_padre(B,D):- es_hijo(D,B).es_nieto(D,A):-  es_padre(B,D), es_padre(A,B).
Grafos A B C D E Un grafo (en inglés graph) es un T.D.A. que representa un conjunto finito N de nodos, llamados vértices, relacionados entre sí por un conjunto R de arcos. Grafo con 5 vértices y 6 arcos. Vértices del Grafo    N ={ A, B, C, D, E } Arcos del Grafo    R={(A, A), (A, B), (A, D), (A, C), (D, C), (C, E)}
Representación Matricial de Grafos   A                 B         C   D   E    A B 0    1   2    3   4 C D 0    1 2   3     4 0 1 2 3 4   0   1   1   0   0 E   0   0   1   0   0    1   1   0   0   0    1   0   0   0   0   0   1   0   0   0 Vértices Matriz de Adyacencia
Sucesión de Fibonacci En matemática, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales: La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores. 0,1,1,2,3,5,8,13……….. A cada elemento de esta sucesión se le llama número de Fibonacci. Esta sucesión fue descrita en Europa por Leonardo de Pisa, matemático italiano del siglo XIII también conocido como Fibonacci. Tiene numerosas aplicaciones en ciencias de la computación, matemáticas y teoría de juegos. La sucesión fue descrita por Fibonacci como la solución a un problema de la cría de conejos: "Cierto hombre tenía una pareja de conejos juntos en un lugar cerrado y uno desea saber cuántos son creados a partir de este par en un año cuando es su naturaleza parir otro par en un simple mes, y en el segundo mes los nacidos parir también".
22 Ejemplo:   Serie de Fibonacci Valores: 0, 1, 1, 2, 3, 5, 8... Cada término de la serie suma los 2 anteriores. Fórmula recursiva fib(n) = fib (n - 1) + fib (n - 2) Caso base: 	Fib (0)=0; Fib (1)=1 Caso recursivo: Fib (i) = Fib (i -1) + Fib(i -2) public static int fib(int n){ if (n <= 1) return n;        //condición base 		else  return fib(n-1)+fib(n-2);    //condición recursiva }
Aplicaciones de Fibonacci Razón de oro La idea Si divides una línea en dos partes de manera que: entonces tienes la razón de oro.
Aplicaciones de Fibonacci
Fractales ,[object Object],¿Por qué se llaman fractales? El término fue propuesto por el matemático BenoîtMandelbrot en 1975 y deriva del Latín “fractus”, que significa quebrado o fracturado.

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Algoritmo divide y vencerás
Algoritmo divide y vencerásAlgoritmo divide y vencerás
Algoritmo divide y vencerás
 
Tipos de Datos Abstractos (TDA)
Tipos de Datos Abstractos (TDA)Tipos de Datos Abstractos (TDA)
Tipos de Datos Abstractos (TDA)
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Recursividad
RecursividadRecursividad
Recursividad
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Master theorem
Master theoremMaster theorem
Master theorem
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Programación geométrica
Programación geométricaProgramación geométrica
Programación geométrica
 
Complexity of Algorithm
Complexity of AlgorithmComplexity of Algorithm
Complexity of Algorithm
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Regular language and Regular expression
Regular language and Regular expressionRegular language and Regular expression
Regular language and Regular expression
 
Complejidad Algoritmica
Complejidad AlgoritmicaComplejidad Algoritmica
Complejidad Algoritmica
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Greedy algorithms
Greedy algorithmsGreedy algorithms
Greedy algorithms
 
Recursion
RecursionRecursion
Recursion
 
Elements of Dynamic Programming
Elements of Dynamic ProgrammingElements of Dynamic Programming
Elements of Dynamic Programming
 

Destaque (11)

Ejercicios con matrices
Ejercicios con matricesEjercicios con matrices
Ejercicios con matrices
 
Recursividad
RecursividadRecursividad
Recursividad
 
apuntes de java
apuntes de javaapuntes de java
apuntes de java
 
Lista de adyacencia
Lista de adyacenciaLista de adyacencia
Lista de adyacencia
 
Grafos
GrafosGrafos
Grafos
 
grafos conexos
grafos conexosgrafos conexos
grafos conexos
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 

Semelhante a Recursividad: conceptos, tipos y ejemplos

Semelhante a Recursividad: conceptos, tipos y ejemplos (20)

Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
Revisión bibliográfica matemática.pdf
Revisión bibliográfica matemática.pdfRevisión bibliográfica matemática.pdf
Revisión bibliográfica matemática.pdf
 
Metodologia de la programacion recursividad
Metodologia de la programacion   recursividadMetodologia de la programacion   recursividad
Metodologia de la programacion recursividad
 
Python
PythonPython
Python
 
Genesis grupo 1
Genesis grupo 1Genesis grupo 1
Genesis grupo 1
 
Recursividad ia lili
Recursividad ia liliRecursividad ia lili
Recursividad ia lili
 
Recursividad ia lili
Recursividad ia liliRecursividad ia lili
Recursividad ia lili
 
Presentación de Dauglismar.pdf
Presentación de Dauglismar.pdfPresentación de Dauglismar.pdf
Presentación de Dauglismar.pdf
 
Evidencia 4
Evidencia 4Evidencia 4
Evidencia 4
 
Tareas plus
Tareas plus Tareas plus
Tareas plus
 
Sesión001
Sesión001Sesión001
Sesión001
 
Fibonacci
FibonacciFibonacci
Fibonacci
 
Número aureo.3.12 (3)
Número aureo.3.12 (3)Número aureo.3.12 (3)
Número aureo.3.12 (3)
 
Libro_1s mate actividades.pdf
Libro_1s mate actividades.pdfLibro_1s mate actividades.pdf
Libro_1s mate actividades.pdf
 
Unidad 1 - El número real.pdf
Unidad 1 - El número real.pdfUnidad 1 - El número real.pdf
Unidad 1 - El número real.pdf
 
Clase 12 Buscando regularidades
Clase 12 Buscando regularidadesClase 12 Buscando regularidades
Clase 12 Buscando regularidades
 
Sistemas numéricos
Sistemas numéricosSistemas numéricos
Sistemas numéricos
 
Logica matematica y algebra
Logica matematica y algebraLogica matematica y algebra
Logica matematica y algebra
 
Matematicabasica1
Matematicabasica1Matematicabasica1
Matematicabasica1
 
Matematicabasica1
Matematicabasica1Matematicabasica1
Matematicabasica1
 

Mais de Cristian Alberto Oliva

Mais de Cristian Alberto Oliva (9)

Diseño multimedia intro css
Diseño multimedia intro cssDiseño multimedia intro css
Diseño multimedia intro css
 
Introduccion xhtml
Introduccion xhtmlIntroduccion xhtml
Introduccion xhtml
 
HTML5, CSS3, JQUERY Y BOOSTRAP
HTML5, CSS3, JQUERY Y BOOSTRAPHTML5, CSS3, JQUERY Y BOOSTRAP
HTML5, CSS3, JQUERY Y BOOSTRAP
 
Cronograma 13 encuentor inf definitivo
Cronograma 13 encuentor inf  definitivoCronograma 13 encuentor inf  definitivo
Cronograma 13 encuentor inf definitivo
 
Cronograma 13 encuentor inf (2)
Cronograma 13 encuentor inf (2)Cronograma 13 encuentor inf (2)
Cronograma 13 encuentor inf (2)
 
Horario tui 2 cuat 2015 lic cristian oliva
Horario tui 2 cuat 2015   lic cristian olivaHorario tui 2 cuat 2015   lic cristian oliva
Horario tui 2 cuat 2015 lic cristian oliva
 
Horario h tui 2 cuat 2015 Lic cristian oliva
Horario h tui 2 cuat 2015   Lic cristian olivaHorario h tui 2 cuat 2015   Lic cristian oliva
Horario h tui 2 cuat 2015 Lic cristian oliva
 
Horario tui 2 cuat 2015 lic cristian oliva
Horario tui 2 cuat 2015   lic cristian olivaHorario tui 2 cuat 2015   lic cristian oliva
Horario tui 2 cuat 2015 lic cristian oliva
 
Programacion de Cadenas
Programacion de CadenasProgramacion de Cadenas
Programacion de Cadenas
 

Recursividad: conceptos, tipos y ejemplos

  • 1.
  • 5.
  • 6. El proceso de resolver un problema reduciéndolo a uno o mas sub problemas.
  • 7.
  • 8.
  • 9. Reglas para realizar un Algoritmo Caso Base. Progreso. Credibilidad. Interés compuesto.
  • 10.
  • 11.
  • 12. Las fórmulas recursivas pueden aplicarse a situaciones Matemáticas, etc.
  • 13.
  • 14.
  • 15.
  • 16. Se crea en la pila de un registro de activación o entorno “E”.
  • 17. Almacena constantes, variables locales y parámetros formales.
  • 18. Estos registros se van apilando conforme se llaman sucesivamente desde una función a otras.
  • 19.
  • 20. 4!=4* 3! Ejemplo: 3!= 3*2! 2!= 2 *1! 1!= 1 *0! //Solución no estructuradaint factorial (int n) {if (n==0) //Caso base return 1;else //Caso General return n*factorial(n-1);} 0!= 1
  • 21. 4!=4* 3! 4!=4* 3! 4!=4* 3! 3!= 3*2! 3!= 3*2! 3!= 6 2!= 2 *1! 2!= 2 1!= 1 *1 4!=24
  • 22.
  • 23.
  • 24. Recursividad en Listas La estructura de listas es recursiva cuando (el “resto” de una lista es a su vez una lista), la mayoría de los programas sobre listas serán recursivos de forma natural. Ejemplo: Supongamos que tenemos la lista de las personas que asistirán a un a reunión y queremos averiguar si una determinada persona irá a ella. En Prolog seria: miembro(X, L)" que significa X es miembro de la lista L. 1. miembro(X, [X|Y]). 2. miembro(X, [Y|Z]) :- miembro(X,Z). Una posible pregunta al programa es: ? miembro(pedro, [maría, pedro, juan, ana]). ? miembro(pedro, [maria, pedro, juan, ana]). 2. {X1®pedro, Y1®maria, Z1® [pedro,juan,ana]} ? miembro(pedro, [pedro, juan, ana]). 1. {X2®pedro, Y2® [juan,ana]} ı EXITO (la contestación es si)
  • 25. Definición de Árbol A A C C B B G G E E F F D D Un árbol (tree) es un tipo de dato abstracto (T.D.A.) que consta de un conjunto finito T de nodos y una relación R (paternidad) entre los nodos tal que: Hay un nodo, especialmente designado, llamado la raíz del árbol T.
  • 26. Códigos de Árbol A A C C B B G G E E F F D D En Prolog seria: es_padre(B,D):- es_hijo(D,B).es_nieto(D,A):- es_padre(B,D), es_padre(A,B).
  • 27. Grafos A B C D E Un grafo (en inglés graph) es un T.D.A. que representa un conjunto finito N de nodos, llamados vértices, relacionados entre sí por un conjunto R de arcos. Grafo con 5 vértices y 6 arcos. Vértices del Grafo N ={ A, B, C, D, E } Arcos del Grafo R={(A, A), (A, B), (A, D), (A, C), (D, C), (C, E)}
  • 28. Representación Matricial de Grafos A B C D E A B 0 1 2 3 4 C D 0 1 2 3 4 0 1 2 3 4 0 1 1 0 0 E 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 Vértices Matriz de Adyacencia
  • 29. Sucesión de Fibonacci En matemática, la sucesión de Fibonacci es la siguiente sucesión infinita de números naturales: La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores. 0,1,1,2,3,5,8,13……….. A cada elemento de esta sucesión se le llama número de Fibonacci. Esta sucesión fue descrita en Europa por Leonardo de Pisa, matemático italiano del siglo XIII también conocido como Fibonacci. Tiene numerosas aplicaciones en ciencias de la computación, matemáticas y teoría de juegos. La sucesión fue descrita por Fibonacci como la solución a un problema de la cría de conejos: "Cierto hombre tenía una pareja de conejos juntos en un lugar cerrado y uno desea saber cuántos son creados a partir de este par en un año cuando es su naturaleza parir otro par en un simple mes, y en el segundo mes los nacidos parir también".
  • 30. 22 Ejemplo: Serie de Fibonacci Valores: 0, 1, 1, 2, 3, 5, 8... Cada término de la serie suma los 2 anteriores. Fórmula recursiva fib(n) = fib (n - 1) + fib (n - 2) Caso base: Fib (0)=0; Fib (1)=1 Caso recursivo: Fib (i) = Fib (i -1) + Fib(i -2) public static int fib(int n){ if (n <= 1) return n; //condición base else return fib(n-1)+fib(n-2); //condición recursiva }
  • 31. Aplicaciones de Fibonacci Razón de oro La idea Si divides una línea en dos partes de manera que: entonces tienes la razón de oro.
  • 33.
  • 34.
  • 37. Aplicaciones electrónicas.Teoría del Caos Teoría matemática encargada de realizar sistemas con comportamiento impredecibles y aparentemente aleatorios.
  • 38.
  • 39.
  • 40. Girar 60° a la izquierda.
  • 42. Girar 60° a la derecha.
  • 43. Girar 60° a la derecha.
  • 45. Girar 60° a la izquierda.
  • 46.
  • 47. Triangulo de Sierpinski Sierpinski = 0 Sierpinski = 1 Sierpinski = 2
  • 48.