# File lib/facet/integer/factorial.rb, line 10
  def factorial
    return 1 if self == 0
    #self == 0 ? 1 : ( self * (self-1).factorial )
    f = (1..self.abs).inject { |state, item| state * item }
    return self < 0 ? -f : f
  end