Факториал в 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
]]>