Pregunta 2.a - Comprensión y traza recursiva · Prácticas de programación UOC Juny 2020
Tema: Comprensión y traza de algoritmos recursivos · Del examen Juny (2020)
Enunciado
Pregunta 2 [60%]. Análisis y transformación de algoritmo recursivo
A partir del siguiente algoritmo recursivo implementado en C:
#define MAX 64
int guess (int v[MAX], int x)
{
int res;
assert (0 <= x && x <= MAX);
if (x == 0) // (1)
res = 0; // (2)
else // (3)
{
res = guess(v, x-1); // (5)
if (v[x-1] == (x-1)) // (6)
res = res + 1; // (7)
}
return res;
}
a. [10%] Explica la funcionalidad de este método e ilustra de manera detallada la traza de ejecución de llamadas y retornos para la siguiente invocación:
int test;
test = guess({0, 1, 9, 3}, 4);

Solución
Según los criterios oficiales de corrección
Valor retornado final de test
Solución: 3
a. [10%] Explica la funcionalidad de este método e ilustra de manera detallada la traza de ejecución de llamadas y retornos para la siguiente invocación: test = guess({0, 1, 9, 3}, 4);
Solución: Comportamiento del método: La función determina cuántos elementos dentro de los primeros elementos del vector (índices comprendidos entre y ) coinciden en valor con su propia posición, es decir, contabiliza las posiciones tales que . Traza de ejecución: - guess({0, 1, 9, 3}, 0) llega al caso base y retorna 0. - guess({0, 1, 9, 3}, 1) evalúa (, cierto) 1. - guess({0, 1, 9, 3}, 2) evalúa (, cierto) 2. - guess({0, 1, 9, 3}, 3) evalúa (, falso) 2. - guess({0, 1, 9, 3}, 4) evalúa (, cierto) 3. El valor retornado final es 3.
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.