再次执行这个函数直到达到基础情况。这个递归函数的实现不保证能够终止，因为负数实际参数会导致递归调用的无限降链条件。更健壮的实现会在递归前检查实际参数为非负数，如下这样：fun fact n = let有问题的情况（在n是负数的时候）展示了ML的异常系统的使用。这个函数通过将它的内部循环写为尾递归风格而进一步改进，使得调用栈不需要与函数调用的数目成比例的增长。这是通过向内部函数增加额外的“加速器”形式参数来实现的，最终得到：fun fact n = let
列表反转.下列