Усталость туриста - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д