Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/09/2015, 00:51
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Se cierra programa al aproximarse a 1

Tu programa tiene dos problemas:

1. la función recalcular no va a alcanzar nunca el valor 1.0. El motivo es que delta tendrá un valor proporcional a la distancia entre el valor real y 1, cuando ambos valores estén lo suficientemente próximos delta tendrá un valor inferior a la precisión de double, de tal forma que:

Código :
Ver original
  1. dendritas[0].peso=dendritas[0].peso+delta=dendritas[0].peso;
  2. dendritas[1].peso=dendritas[0].peso+delta=dendritas[0].peso;

por cierto, fíjate que dendritas[1].peso se igual a dendritas[0].peso, eso no se si es un comportamiento correcto
y esto se producirá para el resto de iteraciones.

esto se podría solucionar si admitieses como valor válido no que x>=1, sino fabs(x-1)<1e-4. De esta forma admites que, por ejemplo, 0.99991 equivale a 1.0

2. El segundo error es un fallo de diseño. Tu programa se basa en la recursividad lo cual no creo que sea lo adecuado dada la naturaleza del algoritmo que pretendes calcular... sería más lógico romper esa recursividad y sustituirla por un bucle, quizás un while sería lo más lógico.

Un saludo