El factorial de un número es lo que en matemática se denota como:
n! = 0 (cuando n = 1)
n! = n*(n-1)!
Por lo tanto, el factorial de 5 sería:
5! = 5*4*3*2*1 = 120
Podemos calcular el factorial fácilmente tanto con un bucle como con una función recursiva. Vamos a hacerlo con este último método, definiendo una función que es llamada a si misma:
def factorial(n) if n == 0 1 else n * factorial(n-1) end end puts factorial(5)
Tal como hemos definido la función tenemos una gran similitud con la definición matemática. Si n es 0, devolvemos 1, si no, hacemos n*(n-1)!. Una gran ventaja de Ruby es que nos permite cálculos de números grandiosos, por ejemplo, podemos calcular el factorial de 500 (pruébalo en cualquier calculadora, seguro que no te lo calcula ;)
... puts factorial(500) ... $ ruby factorial.rb 1220136825991110068701238785423046926253574342803192842192413588385845373153881997605496447502203281863013616477148203584163378722078177200480785205159329285477907571939330603772960859086270429174547882424912726344305670173270769461062802310452644218878789465754777149863494367781037644274033827365397471386477878495438489595537537990423241061271326984327745715546309977202781014561081188373709531016356324432987029563896628911658974769572087926928871281780070265174507768410719624390394322536422605234945850129918571501248706961568141625359056693423813008856249246891564126775654481886506593847951775360894005745238940335798476363944905313062323749066445048824665075946735862074637925184200459369692981022263971952597190945217823331756934581508552332820762820023402626907898342451712006207714640979456116127629145951237229913340169552363850942885592018727433795173014586357570828355780158735432768888680120399882384702151467605445407663535984174430480128938313896881639487469658817504506926365338175055478128640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Redactado por Nenillo