/External/lua-5.1.4/test/factorial.lua
http://awoe.googlecode.com/ · Lua · 32 lines · 22 code · 6 blank · 4 comment · 4 complexity · 04c1782798e988b2882a19b77d02a6b6 MD5 · raw file
- -- function closures are powerful
- -- traditional fixed-point operator from functional programming
- Y = function (g)
- local a = function (f) return f(f) end
- return a(function (f)
- return g(function (x)
- local c=f(f)
- return c(x)
- end)
- end)
- end
- -- factorial without recursion
- F = function (f)
- return function (n)
- if n == 0 then return 1
- else return n*f(n-1) end
- end
- end
- factorial = Y(F) -- factorial is the fixed point of F
- -- now test it
- function test(x)
- io.write(x,"! = ",factorial(x),"\n")
- end
- for n=0,16 do
- test(n)
- end