Задача про улитку на дереве - 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

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


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

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

7   голосов , оценка 3.714 из 5