Bir sayının faktöriyeli o sayının kendinden itibaren, 1'e kadar tek tek azalarak, her sayıyla çarpılması sonucu elde edilen değere verilen addır. Başka dillere göreceli olarak fonksiyonel dediğimiz ve kendi içinde tekrarlamanın (recursion) çok temiz gerçekleştiği Lisp ve Scheme ise bu işlemi yapmak çok basit:
Lisp:
(defun factorial (n)
(cond
((= n 1) 1)
(t (* n (factorial (- n 1))))))
Scheme:
(define (factorial n)
(cond
((= n 0) 1)
(else (* n (factorial (- n 1))))))
"t" Lisp için true yani doğru anlamına gelir, diğer durumlara uygun değilse condition (koşul) burayı çalıştırır. "#f" "#t" de Scheme için yanlış doğru anlamına gelir. Yukaraki örnekler "n" nin eksi olduğu hallerde çalışmaz, onun için de şöyle bi Scheme bonusu bırakayım:
(define (factorialU n)
(cond
((< n 0) #f)
((<= n 1) 1)
(else (* n (factorialU (- n 1))))))