RosettaCodeData/Task/Factorial/COBOL/factorial-3.cobol
2023-07-01 13:44:08 -04:00

22 lines
557 B
COBOL

IDENTIFICATION DIVISION.
FUNCTION-ID. factorial_recursive.
DATA DIVISION.
LOCAL-STORAGE SECTION.
01 prev-n PIC 9(38).
LINKAGE SECTION.
01 n PIC 9(38).
01 ret PIC 9(38).
PROCEDURE DIVISION USING BY VALUE n RETURNING ret.
IF n = 0
MOVE 1 TO ret
ELSE
SUBTRACT 1 FROM n GIVING prev-n
MULTIPLY n BY factorial_recursive(prev-n) GIVING ret
END-IF
GOBACK.
END FUNCTION factorial_recursive.