SlideShare ist ein Scribd-Unternehmen logo
1 von 5
INTRODUCCIÓN
La recursividad forma parte del repertorio para resolver problemas en
Computación y es de los métodos más poderosos y usados.
Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y
elegantemente simples.
La recursividad es un concepto fundamental en matemáticas y en computación.
Una definición recursiva dice cómo obtener conceptos nuevos empleando el
mismo concepto que intenta describir.
En toda situación en la cual la respuesta pueda ser expresada como una
secuencia de movimientos, pasos o transformaciones gobernadas por un conjunto
de reglas no ambiguas, la fórmula recursiva es un buen candidato para resolver el
problema.

• Ámbito de Aplicación:
– General
– Problemas cuya solución se puede hallar solucionando el mismo problema
pero con un caso de menor tamaño.

• Razones de uso:
– Problemas “casi” irresolubles con las estructuras iterativas.
– Soluciones elegantes.
– Soluciones más simples.

• Condición necesaria:
ASIGNACIÓN DINÁMICA DE MEMORIA



                                 Recursividad
La recursividad consiste en realizar una definición de un concepto en términos del
propio concepto que se está definiendo.

¿En qué consiste la recursividad?

– En el cuerpo de sentencias del subalgoritmo se invoca al propio
subalgoritmo para resolver “una versión más pequeña” del problema
Original.

– Habrá un caso (o varios) tan simple que pueda resolverse directamente sin
necesidad de hacer otra llamada recursiva

Ejemplos:
·Los números naturales se pueden definir de la siguiente forma:
0 es un Número natural y el sucesor de un número natural
es también un número natural.

·El factorial de un número natural n, es 1 si dicho número es 0, o n multiplicado por
el factorial del número n-1, en caso contrario.

·La n-ésima potencia de un número x, es 1 si n es igual a 0, o el producto de x por
la potencia (n-1)-ésima de x, cuando n es
mayor que 0.

Ejemplo: Factorial de un natural.

1 si n == 0
Factorial(n)= n*Factorial(n-1) si n > 0

• Ejemplo: Factorial de un natural.

ALGORITMO N Factorial(E n:N)
VAR
N fact
INICIO
SI n == 0 ENTONCES fact = 1
SINO fact = n*Factorial(n-1)
FINSI
DEVOLVER fact
FIN

                 Escritura de programas recursivos
• 1.-Obtención de una definición exacta del problema

• 2.-Determinar el tamaño del problema completo que hay que resolver
Parámetros en la llamada inicial

• 3.-Resolver el(los) casos bases o triviales (no recursivos).

• 4.-Resolver el caso general en términos de un caso más
pequeño (llamada recursiva).
Distintos parámetros
Ejemplos
• Combinaciones:¿cuántas combinaciones de cierto tamaño pueden hacerse de un
grupo total de elementos?
– C: número total de combinaciones
– Grupo: tamaño total del grupo del que elegir
– Miembros: tamaño de cada subgrupo
– Grupo>=Miembros
-Grupo si Miembros=1
C(Grupo, Miembros) -1 si Miembros=Grupo
-C(Grupo-1,Miembros-1)+C(Grupo-1,Miembros) si Grupo>Miembros>1


 Características de los problemas que pueden ser resueltos de manera recursiva:

-.Los problemas pueden ser redefinidos en términos de uno o
más subproblemas, idénticos en naturaleza al problema original, pero de alguna
forma menores en tamaño.

-.Uno o más subproblemas tienen solución directa o conocida, no recursiva.

-Aplicando la redefinición del problema en términos de problemas más pequeños,
dicho problema se reduce sucesivamente a los subproblemas cuyas soluciones se
conocen directamente.

-La solución a los problemas más simples se utiliza para construir la solución al
problema inicial.


Ejemplos simples de recursividad.

   A) Cálculo del factorial de un número, por ejemplo, 5.

5! = 5 * 4!
4! = 4 * 3!   DESCOMPOSICIÓN DEL PROBLEMA
3!= 3 * 2!
2! = 2 * 1!
1! = 1 * 0!

SOLUCIÓN CONOCIDA O DIRECTA 0! = 1
1! = 1 * 0! = 1
2! = 2 * 1! = 2
3! = 3 * 2! = 6 RESOLUCIÓN DE PROBLEMAS MÁS COMPLEJOS A PARTIR DE
OTROS MÁS SIMPLES
4! = 4 * 3! = 24
5! = 5 * 4! = 120
Diseño de módulos recursivos.
·Módulo M con una llamada a sí mismo: módulo recursivo directo.

·Módulo M con una llamada a otro F, que hace una llamada a
M: Módulo recursivo indirecto.

Ejemplo: Implementación del factorial de un número.
public long factorial (long n)
{
if (n == 0) return 1;
else return n * factorial(n-1);
}



Ejemplo: la sucesión de Fibonacci.
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

·El tercer término de la sucesión se obtiene sumando el segundo
y el primero. El cuarto, a partir de la suma del tercero y el
segundo.
·El problema: calcular el valor del n-ésimo término de la
solución, que se obtendrá sumando los términos n-1 y n-2.
Las respuestas a la preguntas anteriores serían:
·[P1] fibonacci(n) = fibonacci(n-1) + fibonacci(n-2).
·[P2] Casos bases: fibonacci(1) = 1 y fibonacci(2)=1.
·[P3] En cada llamada a la rutina fibonacci se reduce el tamaño
del problema en uno o en dos, por lo que siempre se alcanzará
uno de los dos casos bases.
·[P4] fibonacci(3) = fibonacci(2) + fibonacci(1) = 1 + 1.
Se construye la solución del problema n==2 a partir de los dos casos bases.
Paso de parámetros a los módulos recursivos.

Utilización de parámetros formales: cuidado al decidir si
los parámetros serán de entrada, salida o entrada/salida.
Veamos un ejemplo:

public long factorial (long n)
{
if (n == 0) return 1;
else
{
n = n -1;
return (n+1) * factorial(n);
}
¿Qué ocurre cuando se empiezan a devolver las llamadas recursivas?
n siempre será igual a 0, y se devolverá siempre 1
_
El factorial de cualquier número será 0 (INCORRECTO)



                          ¿Recursión o iteración?

• Ventajas de la Recursión ya conocidas

– Soluciones simples, claras.

– Soluciones elegantes.

– Soluciones a problemas complejos.

• Desventajas de la Recursión: INEFICIENCIA

– Sobrecarga asociada con las llamadas a subalgoritmos



• Una simple llamada puede generar un gran numero de llamadas recursivas.
(Fact(n) genera n llamadas recursivas)

• ¿La claridad compensa la sobrecarga?

• El valor de la recursividad reside en el hecho de que se puede usar para resolver
problemas sin fácil solución iterativa.

– La ineficiencia inherente de algunos algoritmos recursivos.

Weitere ähnliche Inhalte

Was ist angesagt?

polinomios y fracciones algebraicas
polinomios y fracciones algebraicaspolinomios y fracciones algebraicas
polinomios y fracciones algebraicashumbertoruiz
 
Introduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacionIntroduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacionwilmerleon67
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no linealluisatero
 
Matematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo NúmericoMatematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo NúmericoJosé De Escandon
 
Guia representaciones simbolicas y algoritmos
Guia representaciones simbolicas y algoritmosGuia representaciones simbolicas y algoritmos
Guia representaciones simbolicas y algoritmosGuiasprepaAbierta
 
resolucion de ecuaciones diferenciales con MATLAB
resolucion de ecuaciones diferenciales con MATLAB resolucion de ecuaciones diferenciales con MATLAB
resolucion de ecuaciones diferenciales con MATLAB Raul Ibañez
 
Metodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingenMetodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingenedamcar
 
Investigacion sobre interpolacion
Investigacion sobre interpolacionInvestigacion sobre interpolacion
Investigacion sobre interpolacionjosegtorrealba
 
Metodo simplex-investigacion-simulacion-y-operaciones
Metodo simplex-investigacion-simulacion-y-operacionesMetodo simplex-investigacion-simulacion-y-operaciones
Metodo simplex-investigacion-simulacion-y-operacionesManuel Bedoya D
 
Teoría de Interpolación.
Teoría de Interpolación.Teoría de Interpolación.
Teoría de Interpolación.Amilcar Aragoza
 
Leyes delos exponentes presentación
Leyes delos exponentes presentaciónLeyes delos exponentes presentación
Leyes delos exponentes presentaciónnorahildagc
 

Was ist angesagt? (19)

130112719 diferencias-divididas-de-newton
130112719 diferencias-divididas-de-newton130112719 diferencias-divididas-de-newton
130112719 diferencias-divididas-de-newton
 
Optomizacion cd
Optomizacion cdOptomizacion cd
Optomizacion cd
 
polinomios y fracciones algebraicas
polinomios y fracciones algebraicaspolinomios y fracciones algebraicas
polinomios y fracciones algebraicas
 
Introduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacionIntroduccion a la teoria de interpolacion
Introduccion a la teoria de interpolacion
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no lineal
 
Matematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo NúmericoMatematicas cuaderno Cálculo Númerico
Matematicas cuaderno Cálculo Númerico
 
Guia representaciones simbolicas y algoritmos
Guia representaciones simbolicas y algoritmosGuia representaciones simbolicas y algoritmos
Guia representaciones simbolicas y algoritmos
 
Programación lineal
Programación linealProgramación lineal
Programación lineal
 
Guia 3 matlab
Guia 3 matlabGuia 3 matlab
Guia 3 matlab
 
resolucion de ecuaciones diferenciales con MATLAB
resolucion de ecuaciones diferenciales con MATLAB resolucion de ecuaciones diferenciales con MATLAB
resolucion de ecuaciones diferenciales con MATLAB
 
Optimización
OptimizaciónOptimización
Optimización
 
Leyes de los exponentes
Leyes de los exponentesLeyes de los exponentes
Leyes de los exponentes
 
Metodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingenMetodos numericos basicos_para_ingen
Metodos numericos basicos_para_ingen
 
Investigacion sobre interpolacion
Investigacion sobre interpolacionInvestigacion sobre interpolacion
Investigacion sobre interpolacion
 
Análisis numérico
Análisis numéricoAnálisis numérico
Análisis numérico
 
Metodo simplex-investigacion-simulacion-y-operaciones
Metodo simplex-investigacion-simulacion-y-operacionesMetodo simplex-investigacion-simulacion-y-operaciones
Metodo simplex-investigacion-simulacion-y-operaciones
 
Teoría de Interpolación
Teoría de InterpolaciónTeoría de Interpolación
Teoría de Interpolación
 
Teoría de Interpolación.
Teoría de Interpolación.Teoría de Interpolación.
Teoría de Interpolación.
 
Leyes delos exponentes presentación
Leyes delos exponentes presentaciónLeyes delos exponentes presentación
Leyes delos exponentes presentación
 

Andere mochten auch

Cuestionario investigacion
Cuestionario investigacionCuestionario investigacion
Cuestionario investigacionVicktor Criollo
 
Teatro rbmh en la UE
Teatro rbmh en la UETeatro rbmh en la UE
Teatro rbmh en la UELuckyta_2005
 
Multi divide decimales-sexto
Multi divide decimales-sextoMulti divide decimales-sexto
Multi divide decimales-sextoverotrasna
 
BUSINESS PRESENTATION(
BUSINESS PRESENTATION(BUSINESS PRESENTATION(
BUSINESS PRESENTATION(my_block02
 
APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...
APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...
APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...Vítor João Pereira Domingues Martinho
 
Purple cow 2012 (ape button)
Purple cow 2012 (ape button)Purple cow 2012 (ape button)
Purple cow 2012 (ape button)thepurplecowph
 
Los que no salen de la nave ( los curiosos 2010)
Los que no salen de la nave ( los curiosos 2010)Los que no salen de la nave ( los curiosos 2010)
Los que no salen de la nave ( los curiosos 2010)Domingo Cano Molina
 

Andere mochten auch (13)

Cuestionario investigacion
Cuestionario investigacionCuestionario investigacion
Cuestionario investigacion
 
Tareaaa
TareaaaTareaaa
Tareaaa
 
Tarea de Matematicas
Tarea de MatematicasTarea de Matematicas
Tarea de Matematicas
 
Teatro rbmh en la UE
Teatro rbmh en la UETeatro rbmh en la UE
Teatro rbmh en la UE
 
Multi divide decimales-sexto
Multi divide decimales-sextoMulti divide decimales-sexto
Multi divide decimales-sexto
 
BUSINESS PRESENTATION(
BUSINESS PRESENTATION(BUSINESS PRESENTATION(
BUSINESS PRESENTATION(
 
APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...
APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...
APPLICATION OF CONVERGENCE THEORIES AND NEW ECONOMIC GEOGRAPHY IN PORTUGAL. A...
 
Purple cow 2012 (ape button)
Purple cow 2012 (ape button)Purple cow 2012 (ape button)
Purple cow 2012 (ape button)
 
Receita Sopa Da Horta
Receita Sopa Da HortaReceita Sopa Da Horta
Receita Sopa Da Horta
 
Los que no salen de la nave ( los curiosos 2010)
Los que no salen de la nave ( los curiosos 2010)Los que no salen de la nave ( los curiosos 2010)
Los que no salen de la nave ( los curiosos 2010)
 
Bocadillos
BocadillosBocadillos
Bocadillos
 
Cuestionario consultado
Cuestionario consultadoCuestionario consultado
Cuestionario consultado
 
Bienvenidos!
Bienvenidos!Bienvenidos!
Bienvenidos!
 

Ähnlich wie II Unidad (20)

Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01
 
Cap1.1 recursividad
Cap1.1 recursividadCap1.1 recursividad
Cap1.1 recursividad
 
Programación Dinámica
Programación DinámicaProgramación Dinámica
Programación Dinámica
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Programación dinámica
Programación dinámicaProgramación dinámica
Programación dinámica
 
6 dynamic programming
6 dynamic programming6 dynamic programming
6 dynamic programming
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
Programación dinámica
Programación dinámica Programación dinámica
Programación dinámica
 
Algoritmos recursivos
Algoritmos recursivosAlgoritmos recursivos
Algoritmos recursivos
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Metodologia de la programacion recursividad
Metodologia de la programacion   recursividadMetodologia de la programacion   recursividad
Metodologia de la programacion recursividad
 

II Unidad

  • 1. INTRODUCCIÓN La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente simples. La recursividad es un concepto fundamental en matemáticas y en computación. Una definición recursiva dice cómo obtener conceptos nuevos empleando el mismo concepto que intenta describir. En toda situación en la cual la respuesta pueda ser expresada como una secuencia de movimientos, pasos o transformaciones gobernadas por un conjunto de reglas no ambiguas, la fórmula recursiva es un buen candidato para resolver el problema. • Ámbito de Aplicación: – General – Problemas cuya solución se puede hallar solucionando el mismo problema pero con un caso de menor tamaño. • Razones de uso: – Problemas “casi” irresolubles con las estructuras iterativas. – Soluciones elegantes. – Soluciones más simples. • Condición necesaria: ASIGNACIÓN DINÁMICA DE MEMORIA Recursividad La recursividad consiste en realizar una definición de un concepto en términos del propio concepto que se está definiendo. ¿En qué consiste la recursividad? – En el cuerpo de sentencias del subalgoritmo se invoca al propio subalgoritmo para resolver “una versión más pequeña” del problema Original. – Habrá un caso (o varios) tan simple que pueda resolverse directamente sin necesidad de hacer otra llamada recursiva Ejemplos: ·Los números naturales se pueden definir de la siguiente forma:
  • 2. 0 es un Número natural y el sucesor de un número natural es también un número natural. ·El factorial de un número natural n, es 1 si dicho número es 0, o n multiplicado por el factorial del número n-1, en caso contrario. ·La n-ésima potencia de un número x, es 1 si n es igual a 0, o el producto de x por la potencia (n-1)-ésima de x, cuando n es mayor que 0. Ejemplo: Factorial de un natural. 1 si n == 0 Factorial(n)= n*Factorial(n-1) si n > 0 • Ejemplo: Factorial de un natural. ALGORITMO N Factorial(E n:N) VAR N fact INICIO SI n == 0 ENTONCES fact = 1 SINO fact = n*Factorial(n-1) FINSI DEVOLVER fact FIN Escritura de programas recursivos • 1.-Obtención de una definición exacta del problema • 2.-Determinar el tamaño del problema completo que hay que resolver Parámetros en la llamada inicial • 3.-Resolver el(los) casos bases o triviales (no recursivos). • 4.-Resolver el caso general en términos de un caso más pequeño (llamada recursiva). Distintos parámetros
  • 3. Ejemplos • Combinaciones:¿cuántas combinaciones de cierto tamaño pueden hacerse de un grupo total de elementos? – C: número total de combinaciones – Grupo: tamaño total del grupo del que elegir – Miembros: tamaño de cada subgrupo – Grupo>=Miembros -Grupo si Miembros=1 C(Grupo, Miembros) -1 si Miembros=Grupo -C(Grupo-1,Miembros-1)+C(Grupo-1,Miembros) si Grupo>Miembros>1 Características de los problemas que pueden ser resueltos de manera recursiva: -.Los problemas pueden ser redefinidos en términos de uno o más subproblemas, idénticos en naturaleza al problema original, pero de alguna forma menores en tamaño. -.Uno o más subproblemas tienen solución directa o conocida, no recursiva. -Aplicando la redefinición del problema en términos de problemas más pequeños, dicho problema se reduce sucesivamente a los subproblemas cuyas soluciones se conocen directamente. -La solución a los problemas más simples se utiliza para construir la solución al problema inicial. Ejemplos simples de recursividad. A) Cálculo del factorial de un número, por ejemplo, 5. 5! = 5 * 4! 4! = 4 * 3! DESCOMPOSICIÓN DEL PROBLEMA 3!= 3 * 2! 2! = 2 * 1! 1! = 1 * 0! SOLUCIÓN CONOCIDA O DIRECTA 0! = 1 1! = 1 * 0! = 1 2! = 2 * 1! = 2 3! = 3 * 2! = 6 RESOLUCIÓN DE PROBLEMAS MÁS COMPLEJOS A PARTIR DE OTROS MÁS SIMPLES 4! = 4 * 3! = 24 5! = 5 * 4! = 120
  • 4. Diseño de módulos recursivos. ·Módulo M con una llamada a sí mismo: módulo recursivo directo. ·Módulo M con una llamada a otro F, que hace una llamada a M: Módulo recursivo indirecto. Ejemplo: Implementación del factorial de un número. public long factorial (long n) { if (n == 0) return 1; else return n * factorial(n-1); } Ejemplo: la sucesión de Fibonacci. 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... ·El tercer término de la sucesión se obtiene sumando el segundo y el primero. El cuarto, a partir de la suma del tercero y el segundo. ·El problema: calcular el valor del n-ésimo término de la solución, que se obtendrá sumando los términos n-1 y n-2. Las respuestas a la preguntas anteriores serían: ·[P1] fibonacci(n) = fibonacci(n-1) + fibonacci(n-2). ·[P2] Casos bases: fibonacci(1) = 1 y fibonacci(2)=1. ·[P3] En cada llamada a la rutina fibonacci se reduce el tamaño del problema en uno o en dos, por lo que siempre se alcanzará uno de los dos casos bases. ·[P4] fibonacci(3) = fibonacci(2) + fibonacci(1) = 1 + 1. Se construye la solución del problema n==2 a partir de los dos casos bases. Paso de parámetros a los módulos recursivos. Utilización de parámetros formales: cuidado al decidir si los parámetros serán de entrada, salida o entrada/salida. Veamos un ejemplo: public long factorial (long n) { if (n == 0) return 1; else { n = n -1; return (n+1) * factorial(n); }
  • 5. ¿Qué ocurre cuando se empiezan a devolver las llamadas recursivas? n siempre será igual a 0, y se devolverá siempre 1 _ El factorial de cualquier número será 0 (INCORRECTO) ¿Recursión o iteración? • Ventajas de la Recursión ya conocidas – Soluciones simples, claras. – Soluciones elegantes. – Soluciones a problemas complejos. • Desventajas de la Recursión: INEFICIENCIA – Sobrecarga asociada con las llamadas a subalgoritmos • Una simple llamada puede generar un gran numero de llamadas recursivas. (Fact(n) genera n llamadas recursivas) • ¿La claridad compensa la sobrecarga? • El valor de la recursividad reside en el hecho de que se puede usar para resolver problemas sin fácil solución iterativa. – La ineficiencia inherente de algunos algoritmos recursivos.