Escribamos una función que calcula factoriales. La definición matemática de factorial es la siguiente:
(n==0) n! = 1
(sino) n! = n * (n-1)!
En Ruby se puede escribir así:
Se puede apreciar la aparición repetida de end. Debido a esto a Ruby se le conoce como un lenguaje "tipo Algol". (Realmente la sintaxis de Ruby reproduce con más exactitud la del lenguaje Eiffel). También se puede apreciar la falta de la sentencia return. Es innecesaria debido a que una función Ruby devuelve lo último que haya evaluado. La utilización de return es factible aunque innecesaria.Probemos la función factorial. Añadiendo una línea de código obtenemos un programa funcional:
# Programa para hallar el factorial de un número # Guarda este programa como fact.rb def fact(n) if n == 0 1 else n * fact(n-1) end end print fact(ARGV[0].to_i), "\n" |
% ruby fact.rb 400 640345228466238952623479703195030058507025830260029594586844459428023971691868314 362784786474632646762943505750358568108482981628835174352289619886468029979373416 541508381624264619423523070462443250151144486708906627739149181173319559964407095 496713452904770203224349112107975932807951015453726672516278778900093497637657103 263503315339653498683868313393520243737881577867915063118587026182701698197400629 830253085912983461622723045583395207596115053022360868104332972551948526744322324 386699484224042325998055516106359423769613992319171340638589965379701478272066063 202173794720103213566246138090779423045973606995675958360961587151299138222865785 795493616176544804532220078258184008484364155912294542753848035583745180226759000 613995601455952061272111929181050324910080000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000 |