Readability?
[source:ruby]
def factorial n
fac = 1
1.upto n do |i|
fac *= i
end
fac
end
def factorial n
fac = 1
for i in 1..n do
fac = fac * i
end
fac
end
def factorial n
fac = 1
1.upto n { |i| fac *= i }
fac
end
(defun factorial (n)
(loop for i from 1 to n
for fac = 1 then (* fac i)
finally (return fac)))
[/source]
Missed a lightly optimised version:
def factorial n r = 1 n.downto(2) { |i| r *= i } r endand missed a ruby classic (Slower):
def factorial n (2..n).inject(1) { |r, i| r *= i } endI should also note that a friend, who was an ex-Java now corporate web management head, found the Lisp style most readable!?
We prefer the ruby style, with downto.