Ok, así que he estado tratando de concentrarme en la recursión en Java y puedo realizar tareas sencillas como suma, inversión, etc. pero he estado luchando para hacer este ejercicio:¿Encontrar el mínimo de una matriz usando la recursión?
Estoy intentando encuentre el número mínimo en una matriz usando la recursión, pero continúe obteniendo una respuesta de 0.0.
Mi comprensión para la recursión es que necesito incrementar un elemento y luego proporcionar un caso base que terminará la recursión. Creo que estoy cometiendo un error cuando tengo que devolver un valor y cuándo es mejor llamar al método de recursión.
Esto es lo que tengo hasta ahora:
public static double findMin(double[] numbers, int startIndex, int endIndex) {
double min;
int currentIndex = startIndex++;
if (startIndex == endIndex)
return numbers[startIndex];
else {
min = numbers[startIndex];
if (min > numbers[currentIndex]) {
min = numbers[currentIndex];
findMin(numbers, currentIndex, endIndex);
}
return min;
}
} //findMin
Entonces, ¿la declaración de devolución debe ocurrir antes de llamar al método recursivo findMin? Además, no entiendo cómo el startIndex no está cambiando. Cuando llamo al método recursivo findMin, estoy usando los parámetros con currentIndex (en lugar de startIndex), que luego debería pasar como un nuevo startIndex, ¿correcto? Creo que estoy empezando a confundirme :( – Vance
@ user699302: el problema es 'currentIndex = startIndex ++'. Cuando 'startIndex' es 0,' currentIndex' se convierte en 0 y 'startIndex' se convierte en 1. Cuando se invoca' findMin' , lo pasa 'currentIndex', por lo que en esa llamada' startIndex' volverá a ser 0, lo que dará lugar a una recursión infinita y un desbordamiento de la pila. – ColinD