( compute factorial recursively ) ( take x as input, return x! and x as output ) : fact-help dup if 1 - ( leave x-1 on top ) fact-help ( leave x-1, [x-1]! ) 1 + ( leave x, [x-1]!, x ) swap over swap ( leave [x-1]!, x, x ) * ( into x!, x ) swap ( into x, x! ) else 1 swap then ; : fact fact-help drop ; : demo4 " 4 factorial is: " 4 fact . cr " 6 factorial is: " 6 fact . cr ; demo4