Pregunta 2.c - Transformación entre versión recur… · Prácticas de programación UOC 2023
Tema: Transformación entre versión recursiva e iterativa en C · 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;
}
c)
[20%] Reescribe el algoritmo en forma iterativa (en lenguaje C), añadiendo una explicación breve del enfoque adoptado.

Solución
Según los criterios oficiales de corrección
Reescribe el algoritmo en forma iterativa (en lenguaje C).
Solución: ```c #define MAX 128 int mystery(int v[MAX], int x) { int res; assert(x >= 0 && x < MAX); res = 0; while (x >= 0) { if ((v[x] % 2) != 0) { res = res + v[x]; } x = x - 1; } return res; } ```
Añade una explicación breve del enfoque adoptado.
Solución: Se reemplaza la recursión por un bucle while que desciende desde la posición inicial x hasta llegar a 0, acumulando en res aquellos valores impares.
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.c · 2023 · Pregunta 2.c · 2023 ›