Задача про улитку на дереве - Lisp
Формулировка задачи:
Помогите пожалуйста решить
Определить рекурсивную функцию. Распечатать результаты трассировки. Указать вид трассировки.Указать вид рекурсии(рекурсия по значению или по аргументу)В задании все операции над списками выполняются только с элементами верхнего уровня,хотя списки могут содержать подсписки.Рекурсия выполняется только в направлении CDR списка.
(УЛИТКА x A B) выдает местоположение улитки к концу наблюдений,если в начале наблюдений улитка находилась в A см от земли на B метровом дереве.Известно,что каждый солнечный ден улитка сидящая на дереве, поднимается вверх на 2 см,а каждый пасмурный день опускается вниз на 1 см.Список x содержит сведения о том,был ли соответствующий день наблюдения пасмурным или солнечным.
Решение задачи: «Задача про улитку на дереве»
textual
Листинг программы
- (defun Ulita (lstd a b)
- (cond ((null lstd) a)
- ((= (car lstd) 1) (if (= (* 100 a) b) (Ulita (cdr lstd) a b) (Ulita (cdr lstd) (+ 2 a) b)))
- (t (if (zerop a) (Ulita (cdr lstd) a b) (Ulita (cdr lstd) (- a 1) b)))))
- ==> ULITA
- (trace Ulita)
- ==> ULITA
- (ulita '(1 1 0 0 0 1 0 1 1 1) 20 1.5)
- Вход в функцию Ulita Аргументы: (1 1 0 0 0 1 0 1 1 1) 20 1.5
- Вход в функцию Ulita Аргументы: (1 0 0 0 1 0 1 1 1) 22 1.5
- Вход в функцию Ulita Аргументы: (0 0 0 1 0 1 1 1) 24 1.5
- Вход в функцию Ulita Аргументы: (0 0 1 0 1 1 1) 23 1.5
- Вход в функцию Ulita Аргументы: (0 1 0 1 1 1) 22 1.5
- Вход в функцию Ulita Аргументы: (1 0 1 1 1) 21 1.5
- Вход в функцию Ulita Аргументы: (0 1 1 1) 23 1.5
- Вход в функцию Ulita Аргументы: (1 1 1) 22 1.5
- Вход в функцию Ulita Аргументы: (1 1) 24 1.5
- Вход в функцию Ulita Аргументы: (1) 26 1.5
- Вход в функцию Ulita Аргументы: NIL 28 1.5
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- Возврат из функции Ulita Результат: 28
- ==> 28
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д