Найти сумму положительных четных чисел меньше N - Lisp
Формулировка задачи:
Помогите найти ошибку. Делаю в HomeLisp 1.13.4
выдает LESSP: Первый аргумент - не атом
==>f
(defun f (n)
(if (< n 0) (+)
(if(= 0 (rem n 2))
(f (1- n))
(+ n (f (1- n))))))(f ‘(50))
Решение задачи: «Найти сумму положительных четных чисел меньше N»
textual
Листинг программы
(defun f (n &optional (c 2) (s 0)) (if (>= c n) s (f n (+ c 2) (+ s c)))) ==> F (f 12) ==> 30 (f 13) ==> 42 (f 9) ==> 20
Объяснение кода листинга программы
В коде определена функция f для нахождения суммы положительных четных чисел меньше заданного числа n.
Второй и третий аргументы функции f являются опциональными и по умолчанию равны 2 и 0 соответственно.
Если второй аргумент c равен или больше n, то возвращается значение переменной s.
Если c меньше n, то рекурсивно вызывается функция f с аргументами n, c+2 и s+c.
Поскольку в вопросе приведены только определения функции и результат её вызова для нескольких значений, то в списке ниже приведены только номера и названия переменных с их значениями:
n- 12c- 2s- 0 Результат вызова функцииfдляn=12равен 30.n- 13c- 2s- 0 Результат вызова функцииfдляn=13равен 42.n- 9c- 2s- 0 Результат вызова функцииfдляn=9равен 20.