Problema 1 · Programació II UDL 2012

Tema: Recursión: diseño, traza y diagramas de llamadas · Del examen Examen Primer Parcial Curso 2012-2013 (2012)

Enunciado

Problema 1. Diagrama de llamadas y traza de ejecución recursiva

Realizad el diagrama de las llamadas (pila de llamadas / marcos de activación) producidas a lo largo de la ejecución del siguiente programa en Java, especificando detalladamente para cada registro:

El nombre de la función invocada (tened en cuenta que las operaciones básicas como concatenaciones de texto no originan marcos de activación adicionales).

Las variables locales y los parámetros formales, reflejando su valor concreto (o '?' si carecen todavía de inicialización), así como las modificaciones progresivas provocadas por cada asignación. Para los subprogramas predefinidos como println donde se desconozca el identificador del parámetro, emplead param. Podéis abreviar la representación del array inmutable como {2, -4,...}.

Los puntos exactos de retorno a los que se transfiere el flujo, señalando la línea del programa correspondiente.

1 public class MisteryProgram extends ConsoleProgram {

2

3 public int isMisterious(int[] coefs, int left, int right) {

4 if (left == right) {

5 return left;

6 } else {

7 int middle = (left + right) / 2;

8 if (coefs[middle] >= 0) {

9 return 1 + isMisterious(coefs, left, middle - 1);

10 } else {

11 return 1 - isMisterious(coefs, middle, right);

12 }

13 }

14 }

15

16 public int isMisterious(int[] elems) {

17 return isMisterious(elems, 0, elems.length);

18 }

19

20 public void run() {

21 int[] vector = {2, -4, 4, 5, 3, -3, 1, 2};

22 int pos = isMisterious(vector);

23 println("El resultado es " + pos);

24 }

25

26 }

Podéis subir la foto del diagrama de pila de marcos de activación o redactar/completar el desarrollo en el recuadro:

Enunciado: Problema 1 · Programació II UDL 2012

Solución

Según los criterios oficiales de corrección

Diagrama de llamadas y marcos de activación producidos a lo largo de la ejecución

Solución: Diagrama detallado de los 6 marcos de activación con llamadas y desapilado con propagación de retornos.

Desarrollo y traza de los marcos de activación:

Solución: Secuencia de marcos de activación desde run() hasta el caso base isMisterious(coefs, 1, 1), con propagación de retornos y resultado pos = 0.

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

Problema 2 · 2012 ›

Más ejercicios de Recursión: diseño, traza y diagramas de llamadas