lunes, 12 de enero de 2009

Factorial super compacto en ruby

Posiblemente algunos conoceran la clasica implementacion del factorial en ruby, para los que no, la posteo aca:



def factorial(n)
if n > 1
# casos mayor que 1, se usa la formula recursiva
# n! = n*(n-1)!

n * factorial(n-1)
else
# casos 0 y 1, devuelve 1
1
end
end




Les presento una forma mas compacta de expresar el factorial



def factorial(n)
# el metodo inject del rango 2..n multiplica
# todos los elementos del conjunto tal como indica
# el bloque de codigo que se le esta pasando
(2..n).inject{|x,y| x*y}
end



A donde sea que vayan, lleven un interprete de ruby con ustedes

No hay comentarios: