[
 dup # copy the item we are factorializing
 1 - # decrement it 
 0 < # until it reaches zero
 [       # if greater than 0
  dup    # set up the value we are passing to the next recursion
  1 -    # it is one less than the starting value
  fact ! # recurse
  *      # multiply the result of recursion by the original value
  ]
 if
]
fact = # set up the function name so we can recurse to it
drop
