La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Recursividad Programación II Recursividad.

Presentaciones similares


Presentación del tema: "Recursividad Programación II Recursividad."— Transcripción de la presentación:

1 Recursividad Programación II Recursividad

2 ¿Qué es la recursividad? Importante! No olvidar que…
Índice Introducción ¿Qué es la recursividad? Importante! No olvidar que… Programación II Recursividad

3 Introducción Esta presentación tiene como objetivo abordar el estudio de algoritmos recursivos. Se centra en los aspectos conceptuales de la recursividad. Obviamos los detalles correspondientes a la definición de estructuras y tampoco abordamos los criterios sobre cuándo debemos implementar una solución recursiva. Ante cualquier duda releer el módulo sobre recursividad. Para explicar qué es la recursividad, primero hay que explicar qué es la recursividad. Sin caso base, ¿es correcta esta afirmación? Solución al final de la presentación Programación II Recursividad

4 ¿Qué es la recursividad?
Una rutina se considera recursiva cuando dentro del cuerpo de la rutina existe una llamada a sí misma (o a otra rutina que a su vez llama a esta primera). Debemos tener en cuenta que esta acción genera otra instancia de la misma rutina, en un área de memoria diferente y con variables locales independientes de la instancia anterior. Para hacernos una idea gráfica realizaremos una animación de la ejecución del siguiente algoritmo: void main () void MostNumMedios (int iN1,int iN2, int &iResult) int iNum1,iNum2, iRes; //Objetivo: Mostrar los valores intermedios dado dos números //incluyendo los extremos y devolver la suma de los mismos. Nota: La siguiente animación parte desde la llamada a la rutina “MostNumMedios”. (suponiendo ya ejecutadas las tres primeras asignaciones del programa principal) Programación II Recursividad

5 ¿Qué es la Recursividad?
En la primera isntancia recibo como parámetros (1,3,0). Muestro iN1 y me llamo a mí mismo. Observen que todavía me quedan instrucciones por ejecutar. iN1 iN2 iResult 1 3 * 1° Llamada iN1 iN2 iResult 4 3 * 4° Llamada En la cuarta instancia recibo como parámetros (4,3,0). No hago nada ya que 4 no es menor a 3. ¡Al fin alcancé el caso base! Vuelve a tomar el control la rutina que me llamó -3º Instancia- Termino mi ejecución y vuelve a tener el el programa principal que ejecutará la impresión iRes. Ahora puedo culminar mi ejecución acumulando en iResult, o sea en iRes. Fin de la Animación Noten que recibo dos parámetros por valor y el tercero por dirección. De modificar “iResult” estaría modificando “iRes”. En la segunda instancia recibo como parámetros (2,3,0). Muestro iN1, me llamo a mí mismo y quedo a la espera En la tercera instancia recibo como parámetros (3,3,0). Muestro iN1, me llamo a mí mismo y quedo a la espera. Ahora puedo culminar mi ejecución acumulando en iResult, o sea en iRes. Vuelve a tomar el control la rutina que me llamó -1º Instancia- Ahora puedo culminar mi ejecución acumulando en iResult, o sea en iRes. Vuelve a tomar el control la rutina que me llamó -2º Instancia- iN1 iN2 iResult 2 3 * 2° Llamada iN1 iN2 iResult 3 * 3° Llamada 1 3 6 5 3 iNum1 iNum2 iRes Main Animar Memoria RAM 1 2 3 6 (Continúe clickeando para ir avanzando en la presentación) Pantalla Programación II Recursividad

6 Importante! No olvidar que…
Aquellas variables que pasan por valor a la rutina recursiva son copiadas en nuevas direcciones de memorias y liberadas -se pierden- cuando la instancia se termina. Aquellas variables que fueron pasadas por dirección siguen manteniendo la referencia y cualquier cambio que le realicemos afectará a la variable original asociada. Sin un caso base dentro de nuestra rutina recursiva entraremos en un ciclo infinito de llamadas recursivas. Siempre necesitaremos una sentencia condicional que no realice ninguna llamada recursiva para poder frenar. Programación II Recursividad

7 Fin “Para explicar qué es la recursividad, primero hay que explicar qué es la recursividad…” Sin un caso base estaríamos contando el cuento de la buena pipa… Pero claro, seguro ya te habías dado cuenta de esto antes que yo. Espero haberte sido de utilidad. Saludos! Y hasta la próxima. iN1 iN2 iResult 1 3 * iN1 iN2 iResult 1 3 * Programación II Recursividad


Descargar ppt "Recursividad Programación II Recursividad."

Presentaciones similares


Anuncios Google