好吧,我有一个关于 MySql 中的递归的问题,关于创建递归阶乘函数。它给了我错误1424:

Posted

技术标签:

【中文标题】好吧,我有一个关于 MySql 中的递归的问题,关于创建递归阶乘函数。它给了我错误1424:【英文标题】:Well, I have a problem about recursion in MySql, about creating a recursive factorial function. it gives me error 1424: 【发布时间】:2022-01-04 22:20:18 【问题描述】:
DELIMITER //
create function FactorialR (n int) returns int
begin
    declare resultado int default 1;
    set resultado=FactorialR(n-1)*n;

 return resultado;
 end//
 DELIMITER ;

【问题讨论】:

【参考方案1】:

mysql 函数不允许递归。 Recursive stored functions in MySQL

【讨论】:

【参考方案2】:

你不能使用递归,但你总是可以使用简单的循环

当然你可以使用允许递归调用的 Pocedures

create function FactorialR (n int) returns int
begin
    declare resultado BIGint default 1;
    DECLARE m int DEFAuLT  1;
    
loop_label:  LOOP
      IF  m = n THEN 
          LEAVE  loop_label;
      END  IF;
            
      SET  m = m + 1;
      set resultado=resultado*m;
  END LOOP;
 return resultado;
 end
SELECT FactorialR(4)
|阶乘R(4) | | ------------: | | 24 |

db小提琴here

【讨论】:

哦...谢谢你,多么好的提示。

以上是关于好吧,我有一个关于 MySql 中的递归的问题,关于创建递归阶乘函数。它给了我错误1424:的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用重命名命令的情况下递归搜索目录并从文件名中删除开/关括号? [复制]

关于将 MongoDB 与 MySQL 混合用于 Web 应用程序的建议

进行这种递归多对多数据库查找的最优雅方法是啥?

Prolog中的指令顺序和递归

关于递归,我有几句话想说

Python入门之经典函数实例——第1关:递归函数 - 汉诺塔的魅力