(defun factorial-lambda (n) (labels ((fact-iter (n acc) ; Локальная функция fact-iter (if (<= n 1) acc ; Базовый случай (fact-iter (- n 1) (* n acc))))) ; Рекурсивный вызов (fact-iter n 1))) ; Вызов локальной функции ;; Пример использования: (format t "Факториал 6 (factorial-lambda): ~A~%" (factorial-lambda 6)) (defun factorial-lambda-down (n) (labels ((fact-rec (x) (if (<= x 1) 1 (* x (fact-rec (- x 1)))))) (fact-rec n))) ;; Пример использования: (format t "Факториал 6 (factorial-lambda-down): ~A~%" (factorial-lambda-down 6)) (defun factorial-let (n) (labels ((fact-iter (n acc) ; Локальная функция fact-iter (if (<= n 1) ; Базовый случай: если n <= 1, возвращаем аккумулятор (acc) acc (fact-iter (- n 1) (* n acc))))) ; Рекурсивный вызов (fact-iter n 1))) ; Вызов локальной функции с начальными значениями ;; Пример использования: (format t "Факториал 6 (factorial-let): ~A~%" (factorial-let 6)) (defun factorial-let-down (n) (labels ((fact-rec (x) ; Определяем локальную функцию fact-rec с `labels` (if (<= x 1) 1 ; Базовый случай (* x (fact-rec (- x 1)))))) ; Рекурсивный вызов (fact-rec n))) ; Вызываем локальную функцию ;; Пример использования: (format t "Факториал 6 (factorial-let-down): ~A~%" (factorial-let-down 6))
Standard input is empty
Факториал 6 (factorial-lambda): 720 Факториал 6 (factorial-lambda-down): 720 Факториал 6 (factorial-let): 720 Факториал 6 (factorial-let-down): 720
Warning: reserving address range 0x80000c0000...0x1fffffffffff that contains memory mappings. clisp might crash later! Memory dump: 0x8000000000 - 0x80000bffff 0x14a3ada00000 - 0x14a3adce4fff 0x14a3ade15000 - 0x14a3ade39fff 0x14a3ade3a000 - 0x14a3adfacfff 0x14a3adfad000 - 0x14a3adff5fff 0x14a3adff6000 - 0x14a3adff8fff 0x14a3adff9000 - 0x14a3adffbfff 0x14a3adffc000 - 0x14a3adffffff 0x14a3ae000000 - 0x14a3ae002fff 0x14a3ae003000 - 0x14a3ae201fff 0x14a3ae202000 - 0x14a3ae202fff 0x14a3ae203000 - 0x14a3ae203fff 0x14a3ae280000 - 0x14a3ae28ffff 0x14a3ae290000 - 0x14a3ae2c3fff 0x14a3ae2c4000 - 0x14a3ae3fafff 0x14a3ae3fb000 - 0x14a3ae3fbfff 0x14a3ae3fc000 - 0x14a3ae3fefff 0x14a3ae3ff000 - 0x14a3ae3fffff 0x14a3ae400000 - 0x14a3ae403fff 0x14a3ae404000 - 0x14a3ae603fff 0x14a3ae604000 - 0x14a3ae604fff 0x14a3ae605000 - 0x14a3ae605fff 0x14a3ae693000 - 0x14a3ae696fff 0x14a3ae697000 - 0x14a3ae697fff 0x14a3ae698000 - 0x14a3ae699fff 0x14a3ae69a000 - 0x14a3ae69afff 0x14a3ae69b000 - 0x14a3ae69bfff 0x14a3ae69c000 - 0x14a3ae69cfff 0x14a3ae69d000 - 0x14a3ae6aafff 0x14a3ae6ab000 - 0x14a3ae6b8fff 0x14a3ae6b9000 - 0x14a3ae6c5fff 0x14a3ae6c6000 - 0x14a3ae6c9fff 0x14a3ae6ca000 - 0x14a3ae6cafff 0x14a3ae6cb000 - 0x14a3ae6cbfff 0x14a3ae6cc000 - 0x14a3ae6d1fff 0x14a3ae6d2000 - 0x14a3ae6d3fff 0x14a3ae6d4000 - 0x14a3ae6d4fff 0x14a3ae6d5000 - 0x14a3ae6d5fff 0x14a3ae6d6000 - 0x14a3ae6d6fff 0x14a3ae6d7000 - 0x14a3ae704fff 0x14a3ae705000 - 0x14a3ae713fff 0x14a3ae714000 - 0x14a3ae7b9fff 0x14a3ae7ba000 - 0x14a3ae850fff 0x14a3ae851000 - 0x14a3ae851fff 0x14a3ae852000 - 0x14a3ae852fff 0x14a3ae853000 - 0x14a3ae866fff 0x14a3ae867000 - 0x14a3ae88efff 0x14a3ae88f000 - 0x14a3ae898fff 0x14a3ae899000 - 0x14a3ae89afff 0x14a3ae89b000 - 0x14a3ae8a0fff 0x14a3ae8a1000 - 0x14a3ae8a3fff 0x14a3ae8a6000 - 0x14a3ae8a6fff 0x14a3ae8a7000 - 0x14a3ae8a7fff 0x14a3ae8a8000 - 0x14a3ae8a8fff 0x14a3ae8a9000 - 0x14a3ae8a9fff 0x14a3ae8aa000 - 0x14a3ae8aafff 0x14a3ae8ab000 - 0x14a3ae8b1fff 0x14a3ae8b2000 - 0x14a3ae8b4fff 0x14a3ae8b5000 - 0x14a3ae8b5fff 0x14a3ae8b6000 - 0x14a3ae8d6fff 0x14a3ae8d7000 - 0x14a3ae8defff 0x14a3ae8df000 - 0x14a3ae8dffff 0x14a3ae8e0000 - 0x14a3ae8e0fff 0x14a3ae8e1000 - 0x14a3ae8e1fff 0x560b44cf6000 - 0x560b44de6fff 0x560b44de7000 - 0x560b44ef0fff 0x560b44ef1000 - 0x560b44f50fff 0x560b44f52000 - 0x560b44f80fff 0x560b44f81000 - 0x560b44fb1fff 0x560b44fb2000 - 0x560b44fb5fff 0x560b452af000 - 0x560b452cffff 0x7fffdcd84000 - 0x7fffdcda4fff 0x7fffdcdb2000 - 0x7fffdcdb5fff 0x7fffdcdb6000 - 0x7fffdcdb7fff