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.

Enunciado: Pregunta 2.c - Transformación entre versión recur… · Prácticas de programación UOC 2023

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 ›

Más ejercicios de Transformación entre versión recursiva e iterativa en C