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