Ejercicios de Recursión: diseño, traza y diagramas de llamadas

10 ejercicios de Recursión: diseño, traza y diagramas de llamadas que han salido en los exámenes de Programació II de la UDL…

Problema 1 · 2012

Realizar el diagrama de llamadas (marcos de activación) y la traza de ejecución recursiva del método isMisterious a partir del método run() para el vector {2, -4, 4, 5, 3, -3, 1, 2}.

Problema 2 · 2012

Diseñar e implementar el método recursivo timesInSuffix para contar apariciones de un valor en un sufijo de un vector, con justificación inductiva.

Problema 3 · 2012

Diseñar e implementar un método recursivo copyVector(int[] source) que devuelva un nuevo vector idéntico apoyándose en una función auxiliar sobre prefijos para evitar replicar arrays en cada nivel. Incluir justificación formal del diseño inductivo.

Problema 1 · 2011

Dado el programa Java MisteryProgram que evalúa recursivamente un polinomio aplicando el método de Horner sobre un array {4, 3, 2, 1} con valor inicial 5, elaborar el diagrama con las llamadas en la pila de ejecución (nombres de funciones, variables locales/parámetros con sus valores y puntos de retorno) e indicar el…

Problema 2 · 2011

Diseñar e implementar una función recursiva numberOfDigits(int n) que reciba un número natural y devuelva el número total de dígitos que posee (0 tiene 1 dígito; 23 tiene 2 dígitos; 2430 tiene 4 dígitos), con la debida justificación de casos base y paso inductivo.

Problema 3 · 2011

Diseñar e implementar justificadamente la función recursiva isPrefix(String prefix, String word) para comprobar si una cadena es prefijo de otra, usando recursión por inmersión con un índice auxiliar.

Problema 1 · 2010

Realizar el diagrama de llamadas (pila de bloques de activación) con nombres de métodos, variables locales, parámetros y puntos de retorno para la ejecución de MisteryProgram. Indicar la salida generada por pantalla.

Problema 2 · 2010

Problema 2: Diseñar una función recursiva 'squaredDiffs(double[] a, double[] b, int pos)' para calcular la suma de diferencias cuadráticas de dos vectores de double, justificando caso base, caso recursivo y convergencia, y definir la llamada inicial desde el método envoltorio 'sumOfSquaredDiffs'.

Problema 3 · 2010

Problema 3. Diseñar mediante búsqueda binaria recursiva un algoritmo para determinar si existe coincidencia de valores en un mismo índice entre dos vectores ordenados en sentidos opuestos: uno creciente (asc) y otro decreciente (desc).

Ejercicio Recuperación - Problema 1. Distancia de Manhattan… · 2010

Implementar en Java una función recursiva para calcular la distancia de Manhattan entre dos vectores double[] a través de manhattan(double[] a, double[] b, int pos) y su método lanzador manhattan(double[] a, double[] b).

Otros temas de Programació II