mysql - 创建并调用 MYSQL 函数以查找斐波那契数直到 n 个数
问题描述
我的方法
DELIMITER $$
CREATE FUNCTION fibonacci(num INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE fib1 INT DEFAULT 0;
DECLARE fib2 INT DEFAULT 1;
DECLARE fib3 INT DEFAULT 0;
DECLARE str VARCHAR(255) DEFAULT '01';
IF num = 1 THEN
RETURN fib1;
ELSEIF num = 2 THEN
RETURN CONCAT(fib1, fib2);
ELSE
WHILE num > 2 DO
SET fib3 = fib1 + fib2;
SET fib1 = fib2;
SET fib2 = fib3;
SET num = num - 1;
SET str = CONCAT(str, fib3);
END WHILE;
RETURN str;
END IF;
END $$
DELIMITER ;
如果我使用 SELECT fibonacci(6) 调用上述函数;它返回没有前导零(0)的 11235。我怎样才能显示前导零?
解决方案
我想它会帮助你
DELIMITER $$
CREATE FUNCTION fibonacci_number(n INT) RETURNS INT
DETERMINISTIC
BEGIN
DECLARE f_0 INT default 0;
DECLARE f_1 INT DEFAULT 1;
DECLARE out_fib INT;
DECLARE i INT;
DECLARE f_2 INT;
SET f_0 = 0;
SET f_1 = 1;
SET i = 1;
WHILE (i<=n) DO
SET f_2 = f_0 + f_1;
SET f_0 = f_1;
SET f_1 = f_2;
SET i = i + 1;
END WHILE;
SET out_fib = f_0;
RETURN out_fib;
END $$
推荐阅读
- javascript - Javascript值不变
- ios - 类型“GameViewController”不符合协议“FBSDKLoginButtonDelegate”
- python - 避免在不同包中声明的表的 NoReferencedTableError
- hyperledger-fabric - Hyperledger Composer v0.19.8 升级业务网络时出错
- excel - VBA查找一个字符串并返回所有结果的行号
- asp.net - UpdatePanel 刷新整个页面(ASP.NET WebForm,迁移项目)
- unity3d - 如何禁用 Unity Button 上的 Raycast 矢量?
- c# - 以下构造函数参数没有匹配的夹具数据
- javascript - sqlite3 数据库:TypeError:无法读取未定义的属性
- citrus-framework - 无法使用 citrus 2.7.4 及更高版本执行 citrus 测试用例 xmls