您的位置:首页 > 数据库 > Oracle

基于ORACLE的斐波纳契数列递归算法

2016-06-25 23:01 323 查看
-- 斐波纳契数列
-- 这里有一组数:1、1、2、3、5、8、13、21、34、55......要求计算用这个递归算法,计算出这组数的第40个数是多少?
-- 斐波纳契数列的定义:它的第一项和第二项均为1,以后各项都是前两项之和。
CREATE or REPLACE FUNCTION F_Get_fibonacci(uN IN NUMBER) RETURN NUMBER IS
uR NUMBER;
BEGIN
IF uN<=0 THEN  -- 判断数值是否小于0
uR := 0;     -- 返回数值0
END IF;

IF (uN = 1 OR uN = 2) THEN  -- 判断位数是否是1或2
uR := 1;                  -- 返回数值1
END IF;

IF (uN >= 3) THEN  -- 大于位数 3
-- 进行递归运算,返回指定位数前两位数的和
uR := F_Get_fibonacci(uN-1) + F_Get_fibonacci(uN-2);
END IF;

RETURN(uR);
END F_Get_fibonacci;


SQL> SELECT F_Get_fibonacci(40) FROM DUAL;
F_GET_FIBONACCI(40)
-------------------
102334155

1行被选择,耗时 72.057 秒
SQL>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: