Fibonacci Sequence
Problem Description
Generate first N Fibonacci numbers.
Expected Output
Fibonacci sequence
Hints
Each number is sum of previous two: 0, 1, 1, 2, 3, 5, 8...
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. FIBONACCI.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-N PIC 9(3).
01 WS-COUNT PIC 9(3) VALUE 0.
01 WS-PREV1 PIC 9(10) VALUE 0.
01 WS-PREV2 PIC 9(10) VALUE 1.
01 WS-CURRENT PIC 9(10).
01 WS-DISP PIC Z(9)9.
PROCEDURE DIVISION.
DISPLAY "HOW MANY FIBONACCI NUMBERS? ".
ACCEPT WS-N.
IF WS-N < 1
DISPLAY "ENTER POSITIVE NUMBER"
STOP RUN
END-IF.
DISPLAY "FIBONACCI SEQUENCE:".
MOVE WS-PREV1 TO WS-DISP.
DISPLAY WS-DISP.
ADD 1 TO WS-COUNT.
IF WS-N > 1
MOVE WS-PREV2 TO WS-DISP
DISPLAY WS-DISP
ADD 1 TO WS-COUNT
END-IF.
PERFORM UNTIL WS-COUNT >= WS-N
COMPUTE WS-CURRENT = WS-PREV1 + WS-PREV2
MOVE WS-CURRENT TO WS-DISP
DISPLAY WS-DISP
MOVE WS-PREV2 TO WS-PREV1
MOVE WS-CURRENT TO WS-PREV2
ADD 1 TO WS-COUNT
END-PERFORM.
STOP RUN.
Explanation:
F(n) = F(n-1) + F(n-2). Track two previous values.