Определить функцию (pr1 k n m) - Lisp

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

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

Помогите решить пожалуйста Определить функцию (pr k n m),где m-число строк,которая печатается в виде k k+1...n k k+1...n n+1 ... k k+1...n+m-1 Пример >(pr 1 2 3 5) 23 234 2345 23456 234567

Решение задачи: «Определить функцию (pr1 k n m)»

textual
Листинг программы
(defun pri (k n)
  (cond ((> k n) t)
        (t (princ k) (pri (+ k 1) n)))) 
 
(defun task (k n m)
  (pri k n) (terpri)
  (if (= m 1) 'ok (task k (+ n 1) (- m 1)))) 
 
==> TASK
 
(task 2 3 5)
23
234
2345
23456
234567
 
==> OK

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

В коде определены две функции:

  1. Функция pri с двумя аргументами k и n.
  2. Функция task с тремя аргументами k, n и m. В функции pri происходит проверка условия: если k больше n, то возвращается t (истина), иначе вызывается рекурсивно функция pri с увеличенным на 1 значением k и неизменным значением n. В функции task происходит следующее:
  3. Вызывается функция pri с аргументами k и n.
  4. Выводится символ новой строки (terpri).
  5. Если значение m равно 1, выводится сообщение ok, иначе вызывается рекурсивно функция task с увеличенным на 1 значением k, увеличенным на 1 значением n и уменьшенным на 1 значением m.

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

9   голосов , оценка 3.556 из 5
Похожие ответы