Your SlideShare is downloading. ×
Algoritmos recursivos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Algoritmos recursivos

3,365
views

Published on

Published in: Education, Travel, Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,365
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
68
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ALGORITMOS RECURSIVOS
    Por: Edwin Armando Solis Espinosa
    Algoritmos Computacionales
  • 2. ¿Que es un algoritmo recursivo? *Un algoritmo recursivo es una llamada de una funcion desde la misma funcionson recursivos aquellos algoritmos que estan dentro de ellos mismos son llamados una y otra vez.
  • 3. Recursividad indirectaun algoritmo recursivo indirecto es cuando una subrutina llama a otra subrutina pero no la llama ella misma sino que la llama otra subrutina formando ciclos.Subrutina_A-> subrutina_B->subrutina_Asubrutina_A -> subrutina_B ->subrutina_C ->subrutina_A
  • 4. Ejemplo de recursividad indirectaintpar(int n); int impar(int n); intpar(int n) { if(n == 0) return 1; returnimpar(n-1); } intimpar(int n) { if(n == 0) return 0; returnpar(n-1); }
  • 5. Tipos de recursionRECURSIÓN LINEAL : Si cada llamada recursiva genera, como mucho otra llamada recursiva- FINAL : si la llamada recursiva es la última operación que se efectúa, devolviéndose como resultado lo que se haya obtenido de la llamada recursiva sin modificaciónalguna.- NO FINAL : El resultado obtenido de la llamada recursiva se combina para dar lugar al resultado de la función que realiza la llamada.RECURSIÓN MÚLTIPLE : si alguna llamada puedegenerar más de una llamada adicional.
  • 6. Ejemplo de recursion lineal:{n mayor o igual 0 y m mayor o igual 0}función MCD(n,m:entero)devuelve enterovar r :entero ;opciónn=m : r :=n ;n>m : r :=MCD(n-m,m) ;n<m : r :=MCD(n,m-n) ;fopcióndevuelve rffunción{MCD(n,m) es el maximoentero que divide a n y a m}
  • 7. EJEMPLO DE RECURSION LINEAL NO FINAL{n mayor o igual 0}función FACT (n:entero)devuelve enterovarr,v :entero ;opciónn=0 : r :=1 ;n>0 : v := FACT(n-1) ;r :=v*n;fopcióndevuelve rffunción{FACT(n)=n+!}
  • 8. EJEMPLO DE RECURCION MULTIPLERECURSIÓN MÚLTIPLE :{N mayor o igual 0}función Fib(n:entero)devuelve entero ;var r :entero ;opciónn1 : r:=n ;n>1 : r:=Fib(n-1)+Fib(n-2) ;fopcióndevuelve rffunción{Fib(n)=Fibonacci(n)}
  • 9. Eficacia de la recursividadSe dice que es menos eficaz que la iterativa porque ocupa mas memoria y mayor tiempo de ejecucion pero hace el programa mas sencillo y comprendible.Un programa recursivo se puede transformar en una solucion iterativa mediante el uso de pilas
  • 10. 1
    1
    Uso de pilaslas pilas se utilizan para el almacenar los valores de los parametros del subprograma , los valores de las variables y los resultados de la funcionCalculo de 3 factorial.
    2
    3
    2
    1
    3
    3
    2
    6
  • 11. Como diseñar un algoritmo recursivo*Determinamos parametros del problema planteado.*Resolvemos los casos triviales.*Minimizamos el caso general en terminos de un caso mas simple.*Se descompone el algoritmo en caso base y caso generalcasos base.-es el caso que se plantea desde el principio y se resuelve sin la recursividadcasos generales.-se utilizan cuando el problema es muy complejo y se utiliza en forma recursiva como lo es1.crear subprogramas.2.se usan pasos adicionales y estos con la ayuda de los subprogramas nos dan el resultado del problema general.
  • 12. Algoritmo de divide y venceras en forma teoricael algoritmo de divide y venceras consiste en transformar un problema ´n´ en problemas mas pequeños de tamaños menor que ´n´video de divide y venceras