# 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