Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Complejidad Computacional
Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
ESTRUCTURA DE DATOS Unidad 01 RECURSIVIDAD.
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Programación II Recursividad
ESQUEMA CONCEPTUAL DIVISIBILIDAD CRITERIOS DE DIVISIBILIDAD
Estructuras de datos y algoritmos
Estructuras de datos y algoritmos
UNIVERSIDAD LATINA (UNILA) II.- ANALISIS DE ALGORITMOS
¿Qué es un algoritmo? “(del árabe al-Khowârizmî, sobrenombre del célebre matemático árabe Mohámed ben Musa). Conjunto ordenado y finito de operaciones.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Divisibilidad en los números naturales
Cont. Arbol Binario de Búsqueda
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
MATEMÁTICAS TEMAS: 6-7.
Casos de estudio Estudiaremos tres problemas
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
2.1 Recursividad El hecho de que una función pueda llamarse a sí misma.
Programación I Teoría VI: Recursividad
Recursividad.
Semana 5 Subprogramas..
Análisis de Algoritmos
Repaso/resumen 1.lectura/escritura y asignación 2.funciones 3.selección de instrucciones (if-else) 4.repetición de instrucciones (while) 5.recursión 6.operadores/instrucciones.

Introducción al análisis de algoritmos
Algoritmos.
Ordenación y Búsquedas1UVM Ordenación y Búsqueda.
Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.
CC3001 Algoritmos y Estructuras de Datos
Informática Tema 5 - Estructuras de Control Estructuras de Repetición.
Material de apoyo Unidad 4 Estructura de datos
Análisis de algoritmos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
Recursividad.
Recursividad Estructuras de datos.
Divisibilidad 1. Múltiplos y divisores de un número
Análisis de Algoritmos 2
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
Algoritmos de Ordenamiento y Complejidad
Estructura de Datos En C++
Análisis de Algoritmos
Estructuras de control Resolución de problemas y algoritmos.
Recursividad Un objeto se dice que es recursivo si él mismo forma parte de su definición. Ejemplos de objetos recursivos: Una locomotora es un tren Un.
FRACCIONES IRREDUCIBLES
Resolución de un sistema tres por tres Aplicando el método de Gauss.
Conceptos Avanzados de Programación
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -10-
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Ing. Betty Suárez Torres
TEMA 2: POTENCIAS DE BASE ENTERA
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Unidad V Recursión. Objetivos del Aprendizaje Explicar el concepto de recursión. Discutir las diferentes condiciones que deben ser satisfechas para que.
Conalep Coacalco Algoritmos Recursivos
Ingeniería en Software Facultad de Ingeniería 2014
Múltiplos de un número. Los múltiplos de un número son los números que obtenemos cuando multiplicamos ese número por los naturales.   Ejemplo:
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Concepto y restricciones
INS-204 Fundamentos de Programacion notas de clase, objetivo, programar en Python con nivel medio de destreza.
Solución a Ecuaciones de Recurrencia Dr. Rogelio Dávila Pérez División de Posgrado Universidad Autónoma de Guadalajara
- Máximo común divisor. - Máximo común múltiplo.
Recursividad.
Criterios de divisibilidad
Presentado por: Yuli Domínguez. Portal Educativo El mentor de matemáticas Grupo Océano MÚLTIPLOS Y DIVISORES DE UN NÚMERO.
RECURSIVIDAD.
Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
Transcripción de la presentación:

Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos

Recursión Definición La Recursión permite definir la solución de un problema en términos de sí mismo. Un subprograma que se llama a sí mismo se dice que es recursivo.

Recursión Definición En toda definición recursiva de un problema se debe establecer un estado básico, es decir un estado en el cual la solución no se presente de manera recursiva sino directamente. Esto permite que las llamadas recursivas no continúen indefinidamente. Además, la entrada (datos) del problema debe ir acercándose al estado básico, por medio de llamados recursivos para un conjunto de datos más pequeño.

Recursión El número factorial(!) 0!=1 1!=1 2!=2*1 3!=3*2*1 4!=4*3*2*1 5!= 5*4*3*2*1

Recursión El número factorial(!) 0!=1 1!=1

Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1!

Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1! 3!=3 * 2*1 = 3 * 2!

Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1! 3!=3 * 2*1 = 3 * 2! 4!=4 * 3*2*1 = 4 * 3!

Recursión El número factorial(!) 0!=1 1!=1 2! = 2 * 1 = 2*1! 3!=3 * 2*1 = 3 * 2! 4!=4 * 3*2*1 = 4 * 3! n! = n*(n-1)!

Recursión El número factorial(!) Si n es 1 factorial de n es 1 Sino factorial de n es n * factorial de (n-1)

Recursión El número factorial(!) Si n es 1 factorial de n es 1 Sino factorial de n es n * factorial de (n-1) Caso básico, directo, no recursivo

Recursión El número factorial(!) Si n es 1 factorial de n es 1 Sino factorial de n es n * factorial de (n-1) Llamado recursivo de la operación que se está definiendo. El llamado recursivo se realiza para un valor más pequeño

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); }

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4)

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3)

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2)

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1)

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1) factorial(1) return 1, caso base

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1) 1

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*factorial(1) 1

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) factorial(2) return 2*1

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*factorial(2) 2

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) factorial(3) return 3*2

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*factorial(3) 6

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) return 4*6

Recursión public int factorial( int n ) { if (n == 1) return 1; else return n * factorial(n - 1); } factorial(4) == 24

Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = 4 + 4*1 4 * 1 = 4

Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = 4 + 4*1 4 * 1 = 4

Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = = 8 4 * 1 = 4

Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = 4 + 4*2 4 * 2 = = 8 4 * 1 = 4

Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = * 2 = = 8 4 * 1 = 4

Recursión Multiplicación de números naturales Obtener 4 * 3 recursivamente 4 * 3 = =12 4 * 2 = = 8 4 * 1 = 4

Recursión Multiplicación de números naturales Cuál es el caso básico Cómo es la definición recursiva

Recursión Multiplicación de números naturales a * b = a, si b==1 a * b = a + a *(b-1), si b>1

Recursión Multiplicación de números naturales public int multiplicar (int a, int b) { if(b==1) return a; else return a + multiplicar( a, b-1); }

Recursión La serie fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, …

Recursión La serie fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, … Por definición, los dos primeros valores son 0 y 1 respectivamente. Los otros números de la serie se calculan sumando los dos números que le preceden

Recursión La serie fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, … fib(n)=0,n==0 fib(n)=1,n==1 fib(n) = fib(n-1) + fib(n-2),n>=2

Recursión Multiplicación de números naturales public int fib (int n) { if ( n==0 || n==1 ) return n; else return fib(n-1) + fib(n-2); }

Recursión Calcular la suma de los elementos de un arreglo

Recursión Calcular la suma de los elementos de un arreglo

Recursión Calcular la suma de los elementos de un arreglo ( ) 33 8

Recursión Calcular la suma de los elementos de un arreglo ( ) ( ) 33

Recursión Calcular la suma de los elementos de un arreglo ( ) =163

Recursión Calcular la suma de los elementos de un arreglo public int suma (int x[], int n ) { if(n == 0) return x[0]; else return x[n] + suma(x,n - 1); }

Recursión Defina un método recursivo para encontrar b d Defina un método recursivo para encontrar el máximo común divisor entre a y b. Búsqueda binaria recursiva