Сумма элементов списка - Lisp (229202)

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

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

Подскажите, пожалуйста, в чем ошибка
(defun sum (list)
 ((null list) 0) 
 (+ (car list)(sum (cdr list))))
(sum '(9 7 5 6 4))
выдает ошибку: Error: Illegal argument in functor position: (NULL LIST) in ((NULL LIST) 0).

Решение задачи: «Сумма элементов списка»

textual
Листинг программы
CL-USER 1 > (defun sum-list (lst)
 (cond ((null lst) 0)
       ((+ (car lst) (sum-list (cdr lst))))))
SUM-LIST
 
CL-USER 2 > (sum-list '(1 2 3 4))
10

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

В данном коде определён функционал для суммы элементов списка.

  1. В первой строке кода определена функция с именем sum-list, которая принимает в качестве аргумента lst — список для вычисления суммы.
  2. В второй строке кода функция проверяет, является ли lst пустым списком. Если это так, то возвращается 0, иначе происходит рекурсивный вызов функции с аргументом (cdr lst), который является хвостом списка без первого элемента.
  3. В третьей строке кода происходит сложение первого элемента списка (car lst) и результат вызова функции (sum-list (cdr lst)).
  4. В последней строке кода функция вызывается с аргументом '(1 2 3 4), который является списком чисел. Возвращается результат вычисления суммы списка, равный 10.

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы