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);

Enunciado: Pregunta 2.a - Comprensión y traza recursiva · Prácticas de programación UOC Juny 2020

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 xx elementos del vector (índices comprendidos entre 00 y x−1x - 1) coinciden en valor con su propia posición, es decir, contabiliza las posiciones tales que v[i]==iv[i] == i. 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 v[0]==0v[0] == 0 (0==00 == 0, cierto) ⇒0+1=\Rightarrow 0 + 1 = 1. - guess({0, 1, 9, 3}, 2) evalúa v[1]==1v[1] == 1 (1==11 == 1, cierto) ⇒1+1=\Rightarrow 1 + 1 = 2. - guess({0, 1, 9, 3}, 3) evalúa v[2]==2v[2] == 2 (9==29 == 2, falso) ⇒2+0=\Rightarrow 2 + 0 = 2. - guess({0, 1, 9, 3}, 4) evalúa v[3]==3v[3] == 3 (3==33 == 3, cierto) ⇒2+1=\Rightarrow 2 + 1 = 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.

‹ Pregunta 2.a · Juny 2020

Más ejercicios de Comprensión y traza de algoritmos recursivos