Найти сумму положительных четных чисел меньше N - Lisp

Узнай цену своей работы

Формулировка задачи:

Помогите найти ошибку. Делаю в HomeLisp 1.13.4 выдает LESSP: Первый аргумент - не атом
Листинг программы
  1. (defun f (n)
  2. (if (< n 0) (+)
  3. (if(= 0 (rem n 2))
  4. (f (1- n))
  5. (+ n (f (1- n))))))
==>f
Листинг программы
  1. (f ‘(50))

Решение задачи: «Найти сумму положительных четных чисел меньше N»

textual
Листинг программы
  1. (defun f (n &optional (c 2) (s 0))
  2.   (if (>= c n) s (f n (+ c 2) (+ s c))))
  3.  
  4. ==> F
  5.  
  6. (f 12)
  7.  
  8. ==> 30
  9.  
  10. (f 13)
  11.  
  12. ==> 42
  13.  
  14. (f 9)
  15.  
  16. ==> 20

Объяснение кода листинга программы

В коде определена функция f для нахождения суммы положительных четных чисел меньше заданного числа n. Второй и третий аргументы функции f являются опциональными и по умолчанию равны 2 и 0 соответственно. Если второй аргумент c равен или больше n, то возвращается значение переменной s. Если c меньше n, то рекурсивно вызывается функция f с аргументами n, c+2 и s+c. Поскольку в вопросе приведены только определения функции и результат её вызова для нескольких значений, то в списке ниже приведены только номера и названия переменных с их значениями:

  1. n - 12
  2. c - 2
  3. s - 0 Результат вызова функции f для n=12 равен 30.
  4. n - 13
  5. c - 2
  6. s - 0 Результат вызова функции f для n=13 равен 42.
  7. n - 9
  8. c - 2
  9. s - 0 Результат вызова функции f для n=9 равен 20.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы