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

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

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

Помогите, пожалуйста, на Scheme: определить сумму номеров всех положительных чисел, входящих в заданный список. Списки имеют многоуровневую структуру

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

textual
Листинг программы
  1. (defn f (l)
  2.     (defn go (i l)
  3.         (cond (null? l) 0
  4.               (+ ((def x (car l)) (cond (atom? x) (cond (> x 0) i 0) (go 1 x)))
  5.                  (go (+ 1 i) (cdr l)))))
  6.     (go 1 l))
  7.  
  8. (printLn (f '(1 2 -4 -6 (2 (3 0) -4) -6 7)))
  9. (printLn (f '(1 -2 -3 4 -5 (-1 -2 3))))
  10.  
  11. ........
  12.  
  13. 12
  14. 8

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

В этом коде определен вспомогательный язык программирования Lisp, который используется для написания функций. Функция с именем f принимает на вход список l и рекурсивно вызывает функцию go, которая принимает два аргумента: i и l. Если l равно null, то возвращается 0. В противном случае, если первый элемент списка (car l) является атомом и больше нуля, то i увеличивается на 1. Если первый элемент списка равен нулю, то вызывается функция go с аргументами i и cdr l (остаток списка после удаления первого элемента). Если первый элемент списка не является атомом, то вызывается функция go с аргументами i и cdr l. В конце функция go вызывается с аргументами 1 и l. Код также содержит вызов функции printLn с аргументами (f '(1 2 -4 -6 (2 (3 0) — 4) — 6 7)) и (f '(1 -2 -3 4 -5 (-1 -2 3))), которые передают списки для обработки функцией f.

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


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

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

6   голосов , оценка 4.167 из 5

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

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

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