Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/09/2014, 00:46
Avatar de Profesor_Falken
Profesor_Falken
 
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: simplificar este código

Buenas HackmanC,

Muchas gracias por el apunte. Efectivamente en lugar de i>=0 debí dejar i>0. Lo escribí directamente en el post con prisas y es lo que pasa...

También lo puse basándome en un for, que considero una estructura básica e intuitiva para alguien que no conoce los bucles, pero tu aproximación con while y partiendo de la variable costo me parece más elegante.

Eso si, me parece que tienes un bug cuando compruebas los ceros. Lo único que haces es dejar los últimos índices del array sin leer y no aquellos que contienen el cero.
Por ejemplo, si el array tiene 5 elementos y dectos[0] vale 0, lo único que vas a hacer es descartar dectos[4].

Es sencillo eliminar ese bucle inicial sustituyéndolo por una condición y así de paso mejoramos un poco el rendimiento del algoritmo de 2N a N.

Código Java:
Ver original
  1. int i = desctos.length - 1;
  2.  
  3. costoDesc = costo;
  4. while (i >= 0) {
  5.   if (desctos[i] != 0.0f) {
  6.     costoDesc *= desctos[i--];
  7.   }
  8. }
  9.  
  10. return costoDesc;


Un saludo
__________________
If to err is human, then programmers are the most human of us