Усталость туриста - Lisp

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

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

Турист в первый день прошел 30 км, на каждый следующий день прошел на 3 км меньше, чем в предыдущий. Какое расстояние он прошел за 11 дней?

Решение задачи: «Усталость туриста»

textual
Листинг программы
  1. (defun tourist (m n i)
  2.   (cond ((or (zerop i) (< m n)) 0)
  3.         (t (+ m (tourist (- m n) n (1- i))))))
  4.  
  5.  
  6. > (tourist 30 3 1)
  7. 30
  8. > (tourist 30 3 9)
  9. 162
  10. > (tourist 30 3 10)
  11. 165
  12. > (tourist 30 3 11)
  13. 165
  14. > (tourist 30 3 12)
  15. 165

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

В данном коде определённой функции с именем tourist, которая принимает три аргумента m, n, i. Функция использует конструкцию cond для проверки одного из двух условий: 1) Если i равно нулю или m меньше n, то возвращается 0. 2) Если условие не выполняется, то происходит рекурсивный вызов функции с аргументами (m — n), n, (1-i), и результат m + (результат рекурсивного вызова) возвращается. Примеры вызовов функции: 1) (tourist 30 3 1) — возвращает 30. 2) (tourist 30 3 9) — возвращает 162. 3) (tourist 30 3 10) — возвращает 165. 4) (tourist 30 3 11) — возвращает 165. 5) (tourist 30 3 12) — возвращает 165.

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


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

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

10   голосов , оценка 4.2 из 5

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

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

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