Tuesday, January 10, 2012

Fibonacci procedure for #firebird

I had to do  (recursive function example) Fibonacci stored procedure for Relational Databases exam
so here it is
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 ; ^
To run it and test the numbers type in flamerobin
SELECT N_FIBONACCI
FROM FIBONACCI ('6')
=8


No comments: