Java - Fallo java.lang.StackOverflowError

 
Vista:

Fallo java.lang.StackOverflowError

Publicado por Elias (6 intervenciones) el 03/01/2012 17:00:06
Buenas,

Antes de nada un saludo a todo el foro. Espero que la duda que traigo me haya servido para iniciarme en vuestra comunidad y espero poder aportar mis escasos conocimientos a toda esta familia.

Estoy realizando un programa en Java que a través de un fichero de entrada de las dimensiones de una serie de edificios, me devuelva un fichero de salida en el que se especifique el Skyline (visión desde el horizonte) de estos edificios.

Os detallo el código para que podáis echarme una cable:

temp = ciudad.size();
DyV(ciudad, 0, temp, linea);
}

public static void DyV(ArrayList<edificio> c, int i, int j, ArrayList<TipoSkyline> s) {

int m,n;
ArrayList<TipoSkyline> s1 = new ArrayList<TipoSkyline>();
ArrayList<TipoSkyline> s2 = new ArrayList<TipoSkyline>();

m = (i + j - 1)/2;
n = j - i + 1;

if (n == 1) {
s.add(new TipoSkyline(Integer.valueOf(c.get(0).getInicio()), (Integer.valueOf(c.get(0).getAltura()))));
}
else; {
DyV(c, i, m, s1);
DyV(c, m+1, j, s2);
Combinar(s1, s2, s);
}
}

El problema viene en la creación del objeto s1 y s2 (new Tiposkyline...) y a las 2 llamadas recursivas a DyV...
Ambas me devuelven error "java.lang.StackOverflowError".

Entiendo que son errores por llamadas recursivas infinitas. Pero tambien en la creación del objeto s1 y s2??
No tengo un caso base bien creado (n == 1) que evita esas llamadas recursivas infinitas??

Gracias anticipadas por todo y un saludo.
Elias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Fallo java.lang.StackOverflowError

Publicado por Tom (1831 intervenciones) el 04/01/2012 11:01:28
Pues parece que tus llamadas recursivas están bien, o sea finalizan en su momento.

Prueba a aumentar el stack size con el parámetro -Xss de java ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fallo java.lang.StackOverflowError

Publicado por Elias (6 intervenciones) el 09/01/2012 09:46:18
Hola Tom,

El problema venía de la llamada inicial y un ";" perdido.

Gracias por tomarte la molestia de contestar.

Gracias y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar