Факториал в Lisp
Пример для версий
Corman Common Lisp 3.0,
SBCL 1.0.1,
SBCL 1.0.29,
clisp 2.47,
gcl 2.6.6
Этот пример использует рекурсивное определение факториала, естественное для Lisp. Демонстрирует следующие особенности языка:
-
математические операторы:
(- n 1)
— это префиксная запись, эквивалентная инфиксной записиn-1
; -
операторы сравнения:
(= n 0)
возвращает T, если n равно нулю, иnil
(используется как false) в противном случае; -
условный оператор
if
: выражения в Lisp определяются по скобкам и могут записыватся в несколько строк; -
определение функции с использованием
defun
; -
макрос Common Lisp
loop
; -
спецификации формата вывода в
format
:~D
соответствует целому числу, а~%
— концу строки.
(defun factorial (n)
(if (= n 0)
1
(* n (factorial (- n 1))) ) )
(loop for i from 0 to 16
do (format t "~D! = ~D~%" i (factorial i)) )
Комментарии
]]>blog comments powered by Disqus
]]>