-- Negative n resulted in a stackoverflow (infinite recursion) function fact(n) if n == 0 then return 1 elseif n < 0 then return nil else return n * fact(n - 1) end end print("enter a number:") a = io.read("*n") print(fact(a))