Вывод строки чисел без пробелов, а затем вывод значения в виде списка чисел - Lisp

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

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

Определить функцию (Z1 k n), где k<n, которая сначала выводит строку чисел без пробелов k k+1 k+2 ... n, а затем на другой строке выводит значение в ввиде списка чисел (k k+1 k+2 .. n) Задание вроде не сложное, но с языком дружу плохо, а сделать нужно. Получилось только так.
Листинг программы
  1. (defun z1(k n)
  2. (cond ((= n 0) t)
  3. (t (prin1 k)
  4. (z1 (+ k 1) (- n 1))))
  5. (cond ((/= n 0) t)
  6. (t (prin1 (cons k (cons (+ k 1) nil))))))

Решение задачи: «Вывод строки чисел без пробелов, а затем вывод значения в виде списка чисел»

textual
Листинг программы
  1. (defun p1 (k n)
  2.   (cond ((> k n) (terpri))
  3.         (t (print k) (p1 (+ k 1) n))))
  4.  
  5. ==> P1
  6.  
  7. (defun p2 (k n)
  8.   (cond ((> k n) nil)
  9.         (t (cons k (p2 (+ k 1) n)))))
  10.  
  11. ==> P2
  12.  
  13. (defun task (k n)
  14.   (p1 k n)
  15.   (p2 k n))
  16.  
  17. ==> TASK
  18.  
  19. (task 5 10)
  20.  
  21. 5678910
  22.  
  23. ==> (5 6 7 8 9 10)

Объяснение кода листинга программы

В коде дано три функции: P1, P2 и TASK.

  1. Функция P1 принимает два аргумента: k и n.
    • Если k больше n, то выводится символ terpri (потоковый перевод строки).
    • Иначе, вызывается рекурсивно функция P1 с аргументами k+1 и n.
      • Выводится значение k.
      • И вызывается функция P1 с аргументами k+1 и n.
  2. Функция P2 принимает два аргумента: k и n.
    • Если k больше n, то возвращается значение nil.
    • Иначе, вызывается рекурсивно функция P2 с аргументами k+1 и n.
      • В качестве первого аргумента функции CONS передается значение k.
      • И вызывается функция P2 с аргументами k+1 и n.
  3. Функция TASK принимает два аргумента: k и n.
    • Вызывается функция P1 с аргументами k и n.
    • Вызывается функция P2 с аргументами k и n. В результате выполнения кода выводится строка чисел от 5 до 10 без пробелов. Затем выводится список чисел (5 6 7 8 9 10).

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


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

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

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы