Запишите с использованием предложения PROG функцию (аналог встроенной функции LENGTH ) - Lisp
Формулировка задачи:
(defun len (lst) (prog ((l 0)) loop (if (null lst) (return l)) (setq lst (cdr lst)) (setq l (+ l 1)) (go loop) ) )
Решение задачи: «Запишите с использованием предложения PROG функцию (аналог встроенной функции LENGTH )»
(defun len (lst) (prog (n) (setq n 0) (return (loop (when (null lst) (return n)) (setq n (+ n 1) lst (cdr lst)))))) ==> len (len '(a d v)) ==> 3
Объяснение кода листинга программы
В коде определена функция LENGTH, которая имеет один аргумент lst. Внутри функции используется предложение PROG, которое состоит из двух частей. В первой части переменной n присваивается значение 0. Во второй части используется цикл LOOP, который выполняется до тех пор, пока список lst не станет пустым. При каждой итерации цикла значение переменной n увеличивается на 1, а значение списка lst уменьшается на один элемент (при помощи функции CDR). Когда список становится пустым, в цикле используется условие WHEN, которое проверяет, не является ли пустым список. Если это так, то в функцию возвращается значение переменной n. Если же список не пустой, то цикл продолжается. В конце функции возвращается значение переменной n. Аргумент функции — список '(a d v). Функция возвращает значение 3, потому что в списке три элемента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д