Enumerable#inject を使った解き方

n = gets.to_i
p (1..n).inject(:*)

再帰を使った解き方

def factorial(n)
  if n < 0
    '負の数の階乗は計算できません'
  elsif n == 0
    return 1
  else
    n * factorial(n - 1)
  end
end

puts factorial(n)

参考