(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 0x149c72600000 - 0x149c728e4fff 0x149c72a00000 - 0x149c72a02fff 0x149c72a03000 - 0x149c72c01fff 0x149c72c02000 - 0x149c72c02fff 0x149c72c03000 - 0x149c72c03fff 0x149c72c15000 - 0x149c72c39fff 0x149c72c3a000 - 0x149c72dacfff 0x149c72dad000 - 0x149c72df5fff 0x149c72df6000 - 0x149c72df8fff 0x149c72df9000 - 0x149c72dfbfff 0x149c72dfc000 - 0x149c72dfffff 0x149c72e00000 - 0x149c72e03fff 0x149c72e04000 - 0x149c73003fff 0x149c73004000 - 0x149c73004fff 0x149c73005000 - 0x149c73005fff 0x149c73025000 - 0x149c73026fff 0x149c73027000 - 0x149c73036fff 0x149c73037000 - 0x149c7306afff 0x149c7306b000 - 0x149c731a1fff 0x149c731a2000 - 0x149c731a2fff 0x149c731a3000 - 0x149c731a5fff 0x149c731a6000 - 0x149c731a6fff 0x149c731a7000 - 0x149c731a8fff 0x149c731a9000 - 0x149c731a9fff 0x149c731aa000 - 0x149c731abfff 0x149c731ac000 - 0x149c731acfff 0x149c731ad000 - 0x149c731adfff 0x149c731ae000 - 0x149c731aefff 0x149c731af000 - 0x149c731bcfff 0x149c731bd000 - 0x149c731cafff 0x149c731cb000 - 0x149c731d7fff 0x149c731d8000 - 0x149c731dbfff 0x149c731dc000 - 0x149c731dcfff 0x149c731dd000 - 0x149c731ddfff 0x149c731de000 - 0x149c731e3fff 0x149c731e4000 - 0x149c731e5fff 0x149c731e6000 - 0x149c731e6fff 0x149c731e7000 - 0x149c731e7fff 0x149c731e8000 - 0x149c731e8fff 0x149c731e9000 - 0x149c73216fff 0x149c73217000 - 0x149c73225fff 0x149c73226000 - 0x149c732cbfff 0x149c732cc000 - 0x149c73362fff 0x149c73363000 - 0x149c73363fff 0x149c73364000 - 0x149c73364fff 0x149c73365000 - 0x149c73378fff 0x149c73379000 - 0x149c733a0fff 0x149c733a1000 - 0x149c733aafff 0x149c733ab000 - 0x149c733acfff 0x149c733ad000 - 0x149c733b2fff 0x149c733b3000 - 0x149c733b5fff 0x149c733b8000 - 0x149c733b8fff 0x149c733b9000 - 0x149c733b9fff 0x149c733ba000 - 0x149c733bafff 0x149c733bb000 - 0x149c733bbfff 0x149c733bc000 - 0x149c733bcfff 0x149c733bd000 - 0x149c733c3fff 0x149c733c4000 - 0x149c733c6fff 0x149c733c7000 - 0x149c733c7fff 0x149c733c8000 - 0x149c733e8fff 0x149c733e9000 - 0x149c733f0fff 0x149c733f1000 - 0x149c733f1fff 0x149c733f2000 - 0x149c733f2fff 0x149c733f3000 - 0x149c733f3fff 0x5613d2a0a000 - 0x5613d2afafff 0x5613d2afb000 - 0x5613d2c04fff 0x5613d2c05000 - 0x5613d2c64fff 0x5613d2c66000 - 0x5613d2c94fff 0x5613d2c95000 - 0x5613d2cc5fff 0x5613d2cc6000 - 0x5613d2cc9fff 0x5613d455d000 - 0x5613d457dfff 0x7fff6f042000 - 0x7fff6f062fff 0x7fff6f08c000 - 0x7fff6f08ffff 0x7fff6f090000 - 0x7fff6f091fff