Найти сумму положительных четных чисел меньше 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д