Как суммировать список чисел в Lisp Emacs?

Вы можете использовать std :: ws для извлечения любых пробельных символов во входном буфере перед использованием getline. Заголовок для std :: ws является sstream.

cout << "Enter the number: ";
int number;
cin >> number;
cout << "Enter names: ";
string names;
cin>>ws;
getline(cin, names);
29
задан jfs 26 February 2009 в 16:15
поделиться

4 ответа

(apply '+ '(1 2 3))
65
ответ дан kmkaplan 14 October 2019 в 07:43
поделиться

Это должно добиться цели:

(defun sum-list (list)
  (if list
      (+ (car list) (sum-list (cdr list)))
    0))

[источник]

Редактирование: Вот другая хорошая ссылка , который объясняет car и cdr - в основном они - функции, которые позволяют Вам захватывать первый элемент списка и получать новый список без первого объекта.

-1
ответ дан Andrew Hare 14 October 2019 в 07:43
поделиться

Если вы управляете списками и пишете функциональный код в Emacs, установите библиотеку dash.el . Тогда вы можете использовать функцию -sum :

(-sum '(1 2 3 4 5)) ; => 15
3
ответ дан Mirzhan Irkegulov 14 October 2019 в 07:43
поделиться

автомобиль -> взять первый элемент списка

cdr -> взять все элементы списка, кроме первого элемента

(defun sumup (x) (if (равно x nil) 0 (+ (car x) (sumup (cdr x)))))

(sumup '(5 7 8 10))

30

-1
ответ дан Abakan Marajapov 14 October 2019 в 07:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: