В третьей строке вашего кода вы умножаете x
раз factorial
раз 1-x
.
Первое, что нужно заметить, это factorial
не переменная: это функция. Поскольку Common-Lisp - это Lisp-2, факториал вообще не связан как переменная - он связан как функция.
Вам нужно вызывать функцию factorial
для одного меньше x
, а не x
меньше единицы.
Итак:
(defun factorial (x)
(if (= 1 x) 1
(* x (factorial (- x 1)))))
… должен это сделать.