Нужно записать функцию length итеративно через PROG - Lisp

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

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

Через COND сделал, но через PROG не получается Функция (LENGTH х) является встроенной функцией, которая возвращает в качестве значения длину списка (количество элементов на верхнем уровне). Определить функцию LENGTH сначала рекурсивно с помощью предложения COND и затем итеративно с помощью предложения PROG.

Решение задачи: «Нужно записать функцию length итеративно через PROG»

textual
Листинг программы
(defun idiotic-len (lst)
  (prog (l)
       (setq l 0)
loop (when (null lst) (return l))
       (setq l (+ 1 l) lst (cdr lst)) 
       (go loop)))

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

В данном коде определена функция idiotic-len со следующими шагами:

  1. (defun idiotic-len (lst) ...) - определение функции с именем idiotic-len, которая принимает аргумент lst.
  2. (prog (l) ...) - начало итеративной конструкции.
  3. (setq l 0) - инициализация переменной l значением 0.
  4. (loop (when (null lst) (return l)) ...) - начало цикла loop.
  5. (setq l (+ 1 l) lst (cdr lst)) ... - увеличение значения переменной l на 1, удаление первого элемента из списка lst и присваивание нового значения lst.
  6. (go loop) ... - переход на начало цикла loop.
  7. (when (null lst) (return l)) ... - условие завершения цикла loop, если lst равно null, то возвращается значение переменной l.
  8. (setq l (+ 1 l) lst (cdr lst)) ... - выполняется до тех пор, пока lst не станет пустым списком.
  9. (go loop) ... - переход на начало цикла loop.
  10. (return l) ... - возвращение значения переменной l, которое является длиной списка lst.
  11. (end-of-file) ... - конец итеративной конструкции. Итоговый результат выполнения функции idiotic-len для списка lst будет равен его длине.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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