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

来源:互联网 发布:小米免费网络短信 编辑:程序博客网 时间:2024/05/29 18:33
-- 斐波纳契数列-- 这里有一组数: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)-------------------          1023341551行被选择,耗时 72.057 秒SQL> 


0 0
原创粉丝点击