Определить функцию (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
Объяснение кода листинга программы
В коде определены две функции:
- Функция pri с двумя аргументами k и n.
- Функция task с тремя аргументами k, n и m. В функции pri происходит проверка условия: если k больше n, то возвращается t (истина), иначе вызывается рекурсивно функция pri с увеличенным на 1 значением k и неизменным значением n. В функции task происходит следующее:
- Вызывается функция pri с аргументами k и n.
- Выводится символ новой строки (terpri).
- Если значение m равно 1, выводится сообщение
ok
, иначе вызывается рекурсивно функция task с увеличенным на 1 значением k, увеличенным на 1 значением n и уменьшенным на 1 значением m.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д