( Recursion)
( 18th March 2016)

( Duplicate if non-zero)
: ?DUP  DUP 0= 0= IF DUP ENDIF ;

( Recursive examples:)
( eg 10 COUNTS displays 1 to 10 in ascending order)
R: COUNTS  ?DUP IF DUP 1- COUNTS CR . ENDIF R;

( Factorial example:)
R: (FACT)  ( n1,n2...n3)
   ?DUP IF  DUP ROT *
            SWAP 1-
            (FACT)
        ENDIF R;

: factorial   ( n...factorial n)
   1 SWAP (FACT)
   CR . ;

( ---------------------)
