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

Tema: Recursión: diseño, traza y diagramas de llamadas · Del examen Exámenes de Recuperación y Tercer Parcial de Programación 2 (Curso 2010/2011) (2010)

Enunciado

Dados dos vectores de números reales en doble precisión ( double[]) que cuentan con la misma longitud, se pretende programar una función que halle la distancia de Manhattan existente entre ellos. Dicha métrica responde a la siguiente formulación matemática:manhattan(a,b)=∑i=1n∣ai−bi∣\text{manhattan}(a, b) = \sum_{i=1}^{n} |a_i - b_i|Considerando que en Java los índices de un vector se indexan a partir del valor 0, la signatura del método público principal es: public double manhattan(double[] a, double[] b) {

//...

} Con el fin de posibilitar la recursividad, es necesario introducir un parámetro complementario que determine la posición o segmento del vector sobre el que se opera: public double manhattan(double[] a, double[] b, int pos) {

//...

}

a)

Escribir la implementación de la función recursiva manhattan(double[] a, double[] b, int pos), justificando de forma explícita el caso base, el paso inductivo y el esquema de avance.

public double manhattan(double[] a, double[] b, int pos) { }

b)

Escribir la llamada inicial correspondiente que debe realizarse desde el método manhattan(double[] a, double[] b) para evaluar los vectores al completo.

public double manhattan(double[] a, double[] b) { }

Enunciado: Ejercicio Recuperación - Problema 1. Distancia de Manhattan… · Programació II UDL 2010

Solución

Según los criterios oficiales de corrección

a. Escribir la implementación de la función recursiva manhattan(double[] a, double[] b, int pos) , justificando de forma explícita el caso base, el paso inductivo y el esquema de avance.

Solución: ```java if (pos >= a.length) { return 0.0; } return Math.abs(a[pos] - b[pos]) + manhattan(a, b, pos + 1); ```

b. Escribir la llamada inicial correspondiente que debe realizarse desde el método manhattan(double[] a, double[] b) para evaluar los vectores al completo.

Solución: ```java return manhattan(a, b, 0); ```

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.

‹ Problema 3 · 2010

Más ejercicios de Recursión: diseño, traza y diagramas de llamadas