Professional Documents
Culture Documents
Recursividad
Alex Oviedo Solis
(alexove@hotmail.com)
(alleinerWolf@gmail.com)
Contenido
Introduccin.
Sub-Programas.
Recursividad.
Algoritmo recurrente.
Clasificacin.
Ventajas y desventajas.
Implementacin.
Ejemplos de algoritmos recurrentes.
Introduccin
La recursividad es una Estructura Algoritmica,
util y poderosa que permite resolver muchos
problemas algoritmicos de manera sencilla y
elegante.
Los terminos Recursin y Recursividad son
comunmente usados en la informatica, pero en
terminos comunes se conocen como
Recurrencia.
Sub-Programas
Sus caracteristicas son:
Un Sub-Programa corresponde a la
implementacion de un modulo que sea una unidad
logica unica y diferenciada.
Su estructura debe de ser de caja negra, es decir:
Permite el ingreso de parametros de entrada.
Procesa en funcion de los parametros dados.
Devuelve resultados del proceso como parametros de
Salida.
Puede ser invocado desde el programa principal o
desde otro Sub-Programa.
Sub-Programas
Debe evitarse el uso de variables globales, pues el
paso de datos se da por medio de los parametros.
Cuando se invoca a un sub-programa:
Se guardan las direccion de la instruccion que
invoco el Sub-Programa.
Se transfiere el control al Sub-Programa,
asignandosele espacio de memoria para sus
variables y datos necesarios.
Se devuelven los resultados, y devuelve el control
al programa que invoco al sub-programa desde
donde se le interrumpio.
Recursividad
Recursion es la forma en la cual se puede
especificar un proceso en funcion de su propia
definicion.
Se dice que una funcion es recursiva, cuando
se puede definir en terminos de si misma.
Para ser ms claros, podemos decir que las
instancias complejas de un proceso se
expresan en instancias de menor complejidad,
de modo que al final las instancias simples se
definen explicitamente.
Recursividad
Caso base
1 Si n=1
factorial(n)
Caso recurrente
n * factorial(n-1) Si n>1
Ejemplos de Algoritmos recurrentes
Y su implementacion en pascal seria del
siguiente modo:
Function factorial (n:integer):integer
Begin
Caso Base
mover el disco 1 de inicio a fin Si n=1
Hanoi(n,inicio,fin)
Caso Recurrente
mover n-1 de inicio a auxiliar Si n>1
mover 1 de inicio a fin
mover n-1 de auxiliar a fin
Ejemplos de Algoritmos recurrentes
Codificacin
Procedure
hanoi(n:integer;inicio:integer;fin:integer)
Var
auxiliar:integer;
Begin
if n=1 then
writeln('mover de ',inicio,' a ',fin)
else
Begin
auxiliar:=6-inicio-fin;
hanoi(n-1,inicio,auxiliar);
hanoi(1,inicio,final);
hanoi(n-1,auxiliar,fin);
End;
End;
Gracias por su atencin
A mi tambien
me dio
hambre
grrrrr!!!
Tengo
que irme
volando