home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
forth
/
compiler
/
fpc
/
tutor
/
l7p180
< prev
Wrap
Text File
|
1990-07-15
|
2KB
|
64 lines
╔═════════════════════════════════════════════════════╗
║ Lesson 7 Part 180 F-PC 3.5 Tutorial by Jack Brown ║
╚═════════════════════════════════════════════════════╝
┌─────────────────────────────────────┐
│ Recursive Greatest Common Divisor │
└─────────────────────────────────────┘
The greatest common divisor of two numbers a and b is the largest number
n that will divide into both a and b. Here is the recursive definition,
you figure out how it works
: GCD ( a b -- n ) RECURSIVE
CR ." Entering " .S
DUP IF SWAP OVER MOD GCD
ELSE DROP
THEN
CR ." Leaving " .S ;
┌───────────────────────────────────────┐
│ Recursive Bubble Sort on the Stack. │
└───────────────────────────────────────┘
\ BUBBLE does one pass. It is the recursive word!
: BUBBLE ( n n n ... m m m ... one pass ) RECURSIVE
CR ." ENTERING " .S
DEPTH 1 >
IF 2DUP < IF SWAP THEN
>R BUBBLE R>
THEN
CR ." LEAVING " .S ;
You can get rid of the entering and leaving .
To use: put any numbers on the stack and type SORT
: SORT ( n n n n ... m m m m ... sorted )
DEPTH 1 > IF
DEPTH 1- 0 DO BUBBLE LOOP THEN ;
Directional Recursive Bubble Sort on the stack.
VARIABLE DIRECTION
: ASCENDING DIRECTION ON ;
: DESCENDING DIRECTION OFF ;
: COMPARE DIRECTION @ IF < ELSE > THEN ;
: BUBBLE ( n n n ... m m m ... one pass ) RECURSIVE
CR ." ENTERING " .S
DEPTH 1 >
IF 2DUP COMPARE IF SWAP THEN
>R BUBBLE R>
THEN
CR ." LEAVING " .S ;
: SORT ( n n n n ... m m m m ... sorted )
DEPTH 1 > IF
DEPTH 1- 0 DO BUBBLE LOOP THEN ;
┌─────────────────────────────┐
│ End of Lesson 7 Part 18 │
└─────────────────────────────┘