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

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

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

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

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

textual
Листинг программы
(defn f (l)
    (defn go (i l)
        (cond (null? l) 0
              (+ ((def x (car l)) (cond (atom? x) (cond (> x 0) i 0) (go 1 x)))
                 (go (+ 1 i) (cdr l)))))
    (go 1 l))
 
(printLn (f '(1 2 -4 -6 (2 (3 0) -4) -6 7)))
(printLn (f '(1 -2 -3 4 -5 (-1 -2 3))))
 
........
 
12
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
Похожие ответы