-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathFIB.4TH
41 lines (35 loc) · 890 Bytes
/
FIB.4TH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// FIBONACCI sequence demonstration
CREATE FIBs
50 CELL* ALLOT
: [] (( BASE INDEX -- ADDR ))
CELL* + ; 2 1 #PARMS
: FIBONACCI (| N -- F |) RECURSIVE
N 0 = IF
0 >> F
ELSE N 1 = IF
1 >> F
ELSE
N 2 - FIBONACCI N 1- FIBONACCI + >> F
ENDIF ENDIF ;
: FIB (| N -- |)
N 46 > IF
CR ." * Input integer too large ( > 46 ) !" CR
ELSE
CR ." * Non recursive : FIBONACCI(" N 0 .R ." ) = "
0 FIBs !
1 FIBs CELL+ !
N 1+ 2 ?DO
FIBs #I 2 - [] @ FIBs #I 1- [] @ + FIBs #I [] !
LOOP
FIBs N [] @ .
CR ." * Recursive : FIBONACCI(" N 0 .R ." ) = "
N FIBONACCI .
ENDIF ;
// 10/21/'95
: .FIBSEQ (( -- )) // display Fibonacci sequence
CR 0 DUP 16 U.R 1 DUP 16 U.R
BEGIN
TUCK + DUP 16 U.R
2DUP U>
UNTIL 2DROP CR ;