so here it is
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET TERM ^ ; | |
CREATE PROCEDURE FIBONACCI (NUM INT) | |
RETURNS (N_FIBONACCI DOUBLE PRECISION) | |
AS | |
DECLARE VARIABLE NUM_LESS_ONE INT; | |
DECLARE VARIABLE NUM_LESS_TWO INT; | |
DECLARE VARIABLE RESULT1 DOUBLE PRECISION; | |
DECLARE VARIABLE RESULT2 DOUBLE PRECISION; | |
BEGIN | |
IF (NUM = 1) THEN | |
BEGIN | |
N_FIBONACCI = 1; | |
SUSPEND; | |
END | |
ELSE IF (NUM = 2) THEN | |
BEGIN | |
N_FIBONACCI = 1; | |
SUSPEND; | |
END | |
ELSE | |
BEGIN /**** RECURSION: NUM FIBONACCI = (NUM -1) * (NUM-2) FIBONACCI ****/ | |
NUM_LESS_ONE = NUM - 1; | |
NUM_LESS_TWO = NUM - 2; | |
EXECUTE PROCEDURE FIBONACCI NUM_LESS_ONE | |
RETURNING_VALUES RESULT1; | |
EXECUTE PROCEDURE FIBONACCI NUM_LESS_TWO | |
RETURNING_VALUES RESULT2; | |
N_FIBONACCI = RESULT1+RESULT2; | |
SUSPEND; | |
END | |
END^ | |
SET TERM ; ^ |
SELECT N_FIBONACCI FROM FIBONACCI ('6') =8
No comments:
Post a Comment