You are on page 1of 19

ANLISIS Y DISEO DE ALGORITMOS

UNIDAD I
Tema: Recursividad
Semana 03
2017-0

Mg. Sierra Lian, Fernando Alex


LOGRO DE SESIN

Al finalizar la sesin de clase, el estudiante implementa


algoritmos recursivos as como iterativos; utilizando
mtodos de recursividad directa e indirecta;
demostrando lgica y habilidad en la implementacin
del algoritmo.
AGENDA

Tema: Recursividad.
Definicin de una funcin recursiva
Propiedades: Condicin base - general
Formas de Recursin (Directa - Indirecta)
Recursividad vs Iteracin
Ejemplos Diversos
RECURSIN

Qu entendemos por
Recursividad?
CONCEPTO DE RECURSIN

Recursin, recurrencia o
recursividad es la forma en
la cual se especifica un
proceso basado en su propia
definicin.

Resolver un problema
mediante recursin significa
que la solucin depende de
las soluciones de pequeas
instancias del mismo
problema
FORMAS DE RECURSIN (DIRECTA - INDIRECTA)

Una funcin que se llama a si


misma directa o indirectamente,
es una funcin recursiva.
RECURSIN DIRECTA Y DECLARACIN ANTICIPADA
EN C++

Ejemplo 01
Se pide implementar el factorial de N en forma recursiva (directa), haciendo
uso de una declaracin anticipada y teniendo en cuenta el siguiente
proceso recursivo:

Fact(1) => 1
Fact(n) => n*Fact(n-1)

En el lenguaje C, podemos declarar las variables, los tipos y las


funciones antes de usarlas.
RECURSIN DIRECTA EN C++

Cdigo en C++

Fact(1) => 1
Fact(n) => n*Fact(n-1)
RECURSIN INDIRECTA EN C++

Ejemplo 02
Se pide ingresar un nmero y mostrar el mensaje Par o Impar utilizando un
mtodo recursivo (indirecto), haciendo uso de una declaracin anticipada y
teniendo en cuenta el siguiente proceso recursivo:

Metodo1:
Par(0) => 1
Par(n) => Impar(n-1)

Metodo2:
Impar(0) => 0
Impar(n) => Par(n-1)
RECURSIN INDIRECTA EN C++

Analice el siguiente cdigo:

Observe que par llama a


impar, con lo cual impar debe
estar antes, pero impar llama
a par: esto se llama recursin
indirecta
RECURSIN INDIRECTA EN C++

Cdigo en C++

Metodo1:
Par(0) => 1
Par(n) => Impar(n-1)

Metodo2:
Impar(0) => 0
Impar(n) => Par(n-1)
RECURSIVIDAD VS ITERACIN

La recursin es una herramienta poderosa pero ocupa muchos


recursos en espacio y en tiempo.
La recursin es una herramienta de repeticin mucho mas
poderosa que la iteracin, debido a que la iteracin funciona a
nivel de bloque bsico (lo que se repiten son un conjunto de
sentencias acabadas con un GOTO), en cambio en la recursin
se repite la funcin completa.
As como es importante salir del bucle, no quedarnos
colgados, en la recursin debemos garantizar el camino de
regreso.
RECURSIVIDAD VS ITERACIN
RECURSIVIDAD VS ITERACIN
FACTORIAL ITERATIVO

Cdigo en C++
Preguntas?
FIN DE LA SESION
Gracias....