使用Lisp计算阶乘

时间:2015-04-18 20:04:28

标签: lisp common-lisp

我正在阅读使用Lisp计算阶乘的代码示例,如下所示:

(defun fatorial (n)
  (cond
    ((= n 1) 1)
    (t (* n (fatorial (- n 1))))))

所以,我想知道这个代码示例中的t是什么?它在Lisp中有什么特殊含义吗?我搜索过但无法找到答案!

2 个答案:

答案 0 :(得分:6)

这是LISP用于True的符号。在LISP中的cond中,最后的“catch all”使用t来表示如果前面的条件都没有计算为True,则此代码将始终执行。

在这里考虑它等同于if-else中的else。但总的来说,它只代表真实。

答案 1 :(得分:3)

cond由cond符号后跟多个cond子句组成,每个子句都是一个列表。 cond子句的第一个元素是条件;其余的元素(如果有的话)是动作。 cond形式查找条件评估为真的第一个子句(即,不评估为nil);然后它执行相应的操作并返回结果值。

因此,在你的代码中,第一次测试检查n是否等于1,如果是,则返回1.另一个子句,以" t" (对于lisp中的true)是" else"部分条件。