Pregunta 2.a y 2.b · Prácticas de programación UOC 2021

Tema: Comprensión y traza de algoritmos recursivos · Del examen Examen de síntesis de Prácticas de programación (Convocatoria de enero 2021) (2021)

Enunciado

Analiza el siguiente fragmento programado en lenguaje C perteneciente a un procedimiento denominado guess:

Analiza el siguiente fragmento programado en lenguaje C perteneciente a un procedimiento denominado guess:

int guess(int x)

{

int result;

assert(x >= 0);

if (x == 0) // (1)

result = 1; // (2)

else // (3)

result = guess(x - 1) * x; // (4)

return result; // (5)

}

a.

[10%] ¿Qué efectos prácticos desencadenaría sobre el flujo de control reemplazar la instrucción indicada con la etiqueta (2) por la llamada result = guess(4); ?

b.

[10%] Especifica el significado matemático o funcional que desempeña el algoritmo guess. Asimismo, describe cronológicamente la cadena de llamadas y el cálculo intermedio que surge al ejecutar el siguiente fragmento:

int res;

res = guess(4);

Enunciado: Pregunta 2.a y 2.b · Prácticas de programación UOC 2021

Solución

Según los criterios oficiales de corrección

a. [10%] ¿Qué efectos prácticos desencadenaría sobre el flujo de control reemplazar la instrucción indicada con la etiqueta (2) por la llamada result = guess(4); ?

Solución: Bucle recursivo infinito / desbordamiento de la pila (stack overflow)

b. [10%] Especifica el significado matemático o funcional que desempeña el algoritmo guess .

Solución: Factorial / Factorial de un número (x!x!)

b. [10%] describe cronológicamente la cadena de llamadas y el cálculo intermedio que surge al ejecutar el siguiente fragmento: int res; res = guess(4);

Solución: Fase descendente: guess(4) -> guess(3)*4 -> guess(2)*3 -> guess(1)*2 -> guess(0)*1 -> guess(0) retorna 1. Fase ascendente: retornos sucesivos 1, 1*1=1, 1*2=2, 2*3=6, 6*4=24.

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 - Apartados a y b · 2023 · Pregunta 2.a y 2.b · 2021 ›

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