Pregunta 2.a · Prácticas de programación UOC Juny 2020

Tema: Comprensión y traza de algoritmos recursivos · Del examen Juny (2020)

Enunciado

A partir del código C de la función recursiva guess:

#define MAX 64

void guess (int v[MAX], int x, int value)

{

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

if (x > 0) // (1)

{ // (2)

if (v[x-1] > value) v[x-1] = value; // (3)

guess(v, x-1, value); // (4)

}

}

a)

[10%] Explica el propósito del método y muestra paso a paso la traza de ejecución para la llamada:

int v[4] = {4, 6, 2, 9};

guess (v, 4, 5);

Enunciado: Pregunta 2.a · Prácticas de programación UOC Juny 2020

Solución

Según los criterios oficiales de corrección

Explica el propósito del método

Solución: La función acota superiormente por value todos los elementos comprendidos entre las posiciones 0 y x - 1 del array (sustituye cualquier valor estrictamente mayor que value por este).

Muestra paso a paso la traza de ejecución para la llamada: int v[4] = {4, 6, 2, 9}; guess(v, 4, 5);

Solución: - x = 4: comprueba v[3] = 9 > 5 -> asigna v[3] = 5. Estado: {4, 6, 2, 5}. Llama a guess(v, 3, 5). - x = 3: comprueba v[2] = 2 > 5 (falso). Estado: {4, 6, 2, 5}. Llama a guess(v, 2, 5). - x = 2: comprueba v[1] = 6 > 5 -> asigna v[1] = 5. Estado: {4, 5, 2, 5}. Llama a guess(v, 1, 5). - x = 1: comprueba v[0] = 4 > 5 (falso). Estado: {4, 5, 2, 5}. Llama a guess(v, 0, 5). - x = 0: no se cumple la condición x > 0 (caso base), finaliza la recursión. Resultado final: {4, 5, 2, 5}.

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 · 2021 · Pregunta 2.a - Comprensión y traza recursiva · Juny 2020 ›

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