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

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

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

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

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

textual
Листинг программы
(defun tourist (m n i)
  (cond ((or (zerop i) (< m n)) 0)
        (t (+ m (tourist (- m n) n (1- i))))))
 
 
> (tourist 30 3 1)
30
> (tourist 30 3 9)
162
> (tourist 30 3 10)
165
> (tourist 30 3 11)
165
> (tourist 30 3 12)
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