Определить функцию (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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д