16
Los Retos PHPeros / Re:[RETO] calcular factorial
« en: 26 de Agosto de 2011, 01:15:53 am »
pongo un límite porque es un PROBLEMA. Prueba a calcular 1000! a ver que pasa
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Tu argumento no es válido compañero. Creo que eso era lo que discutías con Siq anteriormente.
Es totalmente INCORRECTO llamar más de 1 vez a una misma función, con los mismos parámetros y que dé el mismo resultado.
Y vuelvo y digo, tu código no es extensible.
Nada más que agregar, además de que no es un código extensible/portable/reutilizable.
-- Physlet --
0.0023460388183594 segundos
0.0024032592773438 segundos
0.0024604797363281 segundos
0.0023889541625977 segundos
0.0023889541625977 segundos
-- good --
0.0033044815063477 segundos
0.0031757354736328 segundos
0.0034189224243164 segundos
0.0033044815063477 segundos
0.0032901763916016 segundos
Yo preferiría que me enviaras la solución, porque no se me ocurre otra manera de hacerlo que no hayan dicho ya.
Vale, pero sigo esperando la solución eficiente.
No, asume que era de 0 a 15. Editaste el que corregí. Ahora sí asume de 1 a 15.igualmente, el factorial de 0 es 1, bueno ahora cambio el enunciado en cuento a eso.
Y pues, ando esperando.
¿A qué tipo de estructuras te refieres?
function factorial($n){return $n > 15 || $n < 0 ? false : ($n==1 ? 1 : $n*factorial($n-1));
}
$fact = factorial(5);
echo $fact ? $fact : 'Error';
Quiero conocer el método más "eficaz" del que hablas.pero pensadlo xD, porcierto, he cambiado el enunciado otra vez, la función estará hecha para leer valores del 1 al 15, porque php no puede calcular valores super largos directamente
Y estoy usando la misma cantidad de líneas, el único cambio que hice fue acortar el nombre de la variable y quitar los espacios, de alguna u otra forma eso ocupa bytes, y hace que cargue más lento el archivo. Aunque obvio, con esta dimensión de archivo las diferencias son invisibles.
function factorial($n){return $n==1?1:$n*factorial($n-1);
}
Esto ya no se llama "optimización", se llama ahorro de espacio.
¿Es esta la solución al reto?