: fac ( n -- n ) dup ( n n ) 1 > if ( n flag ) dup ( n n ) 1 - ( n n-1 ) fac ( n fac-n ) * ( n ) then ( n ) ; 5 fac drop