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:

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.