Pregunta 2.a - Comprensión y traza de algoritmos… · Prácticas de programación UOC 2023

Tema: Comprensión y traza de algoritmos recursivos · Del examen Examen Prueba de síntesis enero 2023 (2023)

Enunciado

A partir del siguiente algoritmo codificado en C:

#define MAX 128

int mystery(int v[MAX], int x)

{

int res;

assert(x >= 0 && x < MAX);

if (x == 0) {

if ((v[0] % 2) != 0)

res = v[0];

else

res = 0;

} else {

if ((v[x] % 2) != 0)

res = v[x] + mystery(v, x - 1);

else

res = mystery(v, x - 1);

}

return res;

}

a)

[10%] Indica el propósito del método mystery. Detalla además la traza secuencial de llamadas y retornos con un diagrama de cajas al ejecutar:

int v[] = {23, 4, 7, 13};

mystery(v, 3);

Enunciado: Pregunta 2.a - Comprensión y traza de algoritmos… · Prácticas de programación UOC 2023

Solución

Según los criterios oficiales de corrección

Indica el propósito del método mystery.

Solución: Calcula la suma de todos los números impares presentes en el vector v desde el índice 0 hasta el índice especificado por x.

Detalla además la traza secuencial de llamadas y retornos con un diagrama de cajas al ejecutar: int v[] = {23, 4, 7, 13}; mystery(v, 3);

Solución: • mystery({23, 4, 7, 13}, 3) invoca a mystery(..., 2) y suma 13 → res = 30 + 13 = 43 • mystery({23, 4, 7, 13}, 2) invoca a mystery(..., 1) y suma 7 → res = 23 + 7 = 30 • mystery({23, 4, 7, 13}, 1) invoca a mystery(..., 0) (4 es par, no suma) → res = 23 • mystery({23, 4, 7, 13}, 0) caso base (23 es impar) → retorna res = 23

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-b · 2023 · Pregunta 2.b - Punteros y gestión de memoria diná… · 2023 ›

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