我们如何创建MySQL存储过程来计算阶乘?

mysql> DELIMITER //

mysql> CREATE PROCEDURE get_factorial(IN N INT)

    -> BEGIN

    ->    SET @@GLOBAL.max_sp_recursion_depth = 255;

    ->    SET @@session.max_sp_recursion_depth = 255;

    ->

    ->    CALL factorial_recursive (N, @factorial);

    ->

    ->    SELECT @factorial;

    -> END //

mysql> DELIMITER //

mysql> CREATE PROCEDURE factorial_recursive(IN N INT,OUT factorial INT)

    -> BEGIN

    ->    IF N = 1 THEN

    ->       SET factorial := 1;

    ->    ELSE

    ->       CALL factorial_recursive (N-1, factorial);

    ->       SET factorial := N * factorial;

    ->    END IF;

    -> END //

mysql> DELIMITER ;

mysql> Call get_factorial(10);

+--------------+

| @factorial   |

+--------------+

|      3628800 |

+--------------+

1 row in set (0.11 sec)

mysql> Call get_factorial(5);

+-------------+

| @factorial  |

+-------------+

|         120 |

+-------------+

1 row in set (0.00 sec)

以上是 我们如何创建MySQL存储过程来计算阶乘? 的全部内容, 来源链接: utcz.com/z/331255.html

回到顶部