Список из квадратов элементов - Lisp
Формулировка задачи:
Описать рекурсивную функцию, которая конструирует список из квадратов элементов данного списка целых чисел.
Желательно в двух вариантах: с использованием лобовой и хвостовой рекурсии.
Спасибо.
Решение задачи: «Список из квадратов элементов»
textual
Листинг программы
( (lambda (f lst) (funcall f lst)) (lambda (lst) (if lst (cons (* (car lst) (car lst)) (funcall f (cdr lst))))) '(1 2 3 4 5 6 7 8 9) )
Объяснение кода листинга программы
В этом коде используется язык программирования Lisp. Вот что делает этот код:
- Создается функция
fс помощьюlambda. - Функция
fпринимает два аргумента:fиlst. - Внутри функции
fвызывается функцияfuncallс аргументомlst. - Создается вторая функция с помощью
lambda. - Вторая функция принимает один аргумент:
lst. - Если
lstне пустой, то возвращаетсяconsс результатом вычисления квадрата первого элементаlstиlstбез первого элемента. - Если
lstпустой, то вызываетсяfuncallс аргументомfиcdrlst. - Создается список
lstс элементами 1, 2, 3, 4, 5, 6, 7, 8, 9. - Вызывается вторая функция с аргументом
lst. - Результат вычисления функции
fс аргументомlstвозвращается в качестве результата выполнения всего кода.