MySQL 下编写函数或过程, 计算数 $n$ 的阶乘.
(1) 编写函数 factorial(n), 计算 $n!$
DELIMITER //
CREATE FUNCTION factorial(n BIGINT)
RETURNS BIGINT
BEGIN
DECLARE m BIGINT;
SET m=1;
WHILE n>1
DO
SET m=m*n;
SET n=n-1;
END WHILE;
RETURN m;
END//
mysql> delimiter ;
mysql> SELECT factorial(20);
+---------------------+
| factorial(20) |
+---------------------+
| 2432902008176640000 |
+---------------------+
1 row in set (0.00 sec)
适用范围
n=1,2,...,20
注意: 参数不能写成 (IN n BIGINT), 否则会返回错误:
ERROR 1064 (42000): Erreur de syntaxe près de 'IN n BIGINT)
验证
可以使用 Calculator 验证
>> 20!
in> 20!
out> 2432902008176640000
------------------------