Простой цикл Лиспа

(defun add-them(a b)

    (loop
        (if (< a 15)
           (setq a (* a b))
           (write a)
        )
        (when(> a 15)
            
            (return a))
    
    )

)
(print (add-them 3 5))

Имея проблемы с этим блоком кода, я хочу иметь возможность проверить, меньше ли a 15, и умножить его на b, если оно меньше 15 в цикле. Затем я хочу вернуть его, если он больше 15. Я никогда раньше не использовал lisp, и это для задания, поэтому, пожалуйста, не давайте мне прямой ответ, просто руководство.

Требует ли ваше задание использования цикла?

Scott Hunter 14.02.2023 16:29

В присваивании указано: «Это повторяется до тех пор, пока результат меньше 15».

oglilprettythug 14.02.2023 16:30

Таким образом, цикл не требуется; это можно сделать с помощью рекурсии.

Scott Hunter 14.02.2023 16:31

Что должно произойти, если a=15?

Scott Hunter 14.02.2023 16:33

Я предполагаю, что они хотят, если >= 15, то вернуться. Это не указывает прямо, поэтому я предполагаю, исходя из контекста.

oglilprettythug 14.02.2023 16:34

Я только что понял, что это уже решено, ха-ха, оно остановилось на 15, потому что было 15, я чувствую себя немного глупо.

oglilprettythug 14.02.2023 16:37

Пожалуйста, добавьте точные инструкции для этого задания (вы действительно должны выводить a на каждом шаге?)... и также спросите учителя, можете ли вы использовать такие вещи, как loop или просто рекурсию.

Martin Půda 14.02.2023 17:17
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Калькулятор CGPA 12 для семестра
Калькулятор CGPA 12 для семестра
Чтобы запустить этот код и рассчитать CGPA, необходимо сохранить код как HTML-файл, а затем открыть его в веб-браузере. Для этого выполните следующие...
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
ONLBest Online HTML CSS JAVASCRIPT Training In INDIA 2023
О тренинге HTML JavaScript :HTML (язык гипертекстовой разметки) и CSS (каскадные таблицы стилей) - две основные технологии для создания веб-страниц....
Как собрать/развернуть часть вашего приложения Angular
Как собрать/развернуть часть вашего приложения Angular
Вам когда-нибудь требовалось собрать/развернуть только часть вашего приложения Angular или, возможно, скрыть некоторые маршруты в определенных средах?
Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
0
7
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

На самом деле нет никакого смысла в изучении Лиспа, если в конечном итоге вы просто копируете код, который мог бы быть написан на Фортране. Лучше подумать о другом способе решения проблемы. В частности таким образом:

Чтобы ответить на задание:

  • начните с а и б:
    • если а >= 15, ответ а,
    • в противном случае ответьте на задание знаком * b и b.
Ответ принят как подходящий

Проверьте свой синтаксис. Оператор if принимает три аргумента: условие, код, когда условие истинно, и код, когда условие ложно.

(if <test>
  <do-this-when-true>
  <do-this-when-false> )

Каждый из них должен быть списком, поэтому, если вам нужно сделать несколько вещей, окружите его, например. progn. В вашем примере это будет выглядеть так

(loop
        (if (< a 15)
           (progn
             (setq a (* a b))
             (write a))
           (return a))
    )

Как упоминалось в другом комментарии, это не очень шепеляво, но это должно быть хорошим началом.

Другие вопросы по теме