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