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 originaldendritas[0].peso=dendritas[0].peso+delta=dendritas[0].peso;
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