You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复PL/pgSQL生成斐波那契序列缺失0和1的问题

修复后的斐波那契序列生成函数

原函数的问题在于初始化后未返回序列的前两个核心数(0和1),直接进入循环计算后续值,导致开头的关键元素被遗漏。

以下是修复后的PL/pgSQL函数:

CREATE OR REPLACE FUNCTION fnc_fibonacci (pstop INTEGER DEFAULT 10)
RETURNS TABLE (fibonacci_num INTEGER) AS $BODY$
DECLARE
    a INTEGER;
    b INTEGER;
    c INTEGER;
BEGIN
    a := 0;
    b := 1;
    -- 先返回0(若小于pstop)
    IF a < pstop THEN
        fibonacci_num := a;
        RETURN NEXT;
    END IF;
    -- 再返回1(若小于pstop)
    IF b < pstop THEN
        fibonacci_num := b;
        RETURN NEXT;
    END IF;
    -- 循环生成后续斐波那契数
    LOOP
        c := a + b;
        EXIT WHEN c >= pstop; -- 达到或超过pstop则退出循环
        fibonacci_num := c;
        RETURN NEXT;
        a := b;
        b := c;
    END LOOP;
END;
$BODY$
LANGUAGE PLPGSQL;

-- 测试调用
SELECT * FROM fnc_fibonacci(20);

测试结果

执行查询后,输出将完整返回所有小于指定值的斐波那契数:

fibonacci_num
--------------
0
1
2
3
5
8
13

内容的提问来源于stack exchange,提问作者Evgeny Step

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 11:10:08