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 originalint i = desctos.length - 1;
costoDesc = costo;
while (i >= 0) {
if (desctos[i] != 0.0f) {
costoDesc *= desctos[i--];
}
}
return costoDesc;
Un saludo