(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))
KGRlZnVuIGZhY3RvcmlhbC1sYW1iZGEgKG4pCiAgKGxhYmVscyAoKGZhY3QtaXRlciAobiBhY2MpICAgICAgICA7INCb0L7QutCw0LvRjNC90LDRjyDRhNGD0L3QutGG0LjRjyBmYWN0LWl0ZXIKICAgICAgICAgICAgIChpZiAoPD0gbiAxKQogICAgICAgICAgICAgICAgIGFjYyAgICAgICAgICAgICAgICAgICA7INCR0LDQt9C+0LLRi9C5INGB0LvRg9GH0LDQuQogICAgICAgICAgICAgICAgIChmYWN0LWl0ZXIgKC0gbiAxKSAoKiBuIGFjYykpKSkpIDsg0KDQtdC60YPRgNGB0LjQstC90YvQuSDQstGL0LfQvtCyCiAgICAoZmFjdC1pdGVyIG4gMSkpKSAgICAgICAgICAgICAgICAgOyDQktGL0LfQvtCyINC70L7QutCw0LvRjNC90L7QuSDRhNGD0L3QutGG0LjQuAogICAgCiAgICA7OyDQn9GA0LjQvNC10YAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y86Cihmb3JtYXQgdCAi0KTQsNC60YLQvtGA0LjQsNC7IDYgKGZhY3RvcmlhbC1sYW1iZGEsINCS0L7RgdGF0L7QtNGP0YnQsNGPINGA0LXQutGD0YDRgdC40Y8pOiB+QX4lIiAoZmFjdG9yaWFsLWxhbWJkYSA2KSkgCgoKKGRlZnVuIGZhY3RvcmlhbC1sYW1iZGEtZG93biAobikKICAobGFiZWxzICgoZmFjdC1yZWMgKHgpCiAgICAgICAgICAgICAoaWYgKDw9IHggMSkKICAgICAgICAgICAgICAgICAxCiAgICAgICAgICAgICAgICAgKCogeCAoZmFjdC1yZWMgKC0geCAxKSkpKSkpCiAgICAoZmFjdC1yZWMgbikpKQogICAgCiAgIAogICAgOzsg0J/RgNC40LzQtdGAINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPOgooZm9ybWF0IHQgItCk0LDQutGC0L7RgNC40LDQuyA2IChmYWN0b3JpYWwtbGFtYmRhLWRvd24sINCd0LjRgdGF0L7QtNGP0YnQsNGPINGA0LXQutGD0YDRgdC40Y8pOiB+QX4lIiAoZmFjdG9yaWFsLWxhbWJkYS1kb3duIDYpKQoKCihkZWZ1biBmYWN0b3JpYWwtbGV0IChuKQogIChsYWJlbHMgKChmYWN0LWl0ZXIgKG4gYWNjKSAgOyDQm9C+0LrQsNC70YzQvdCw0Y8g0YTRg9C90LrRhtC40Y8gZmFjdC1pdGVyCiAgICAgICAgICAgICAoaWYgKDw9IG4gMSkgICAgICA7INCR0LDQt9C+0LLRi9C5INGB0LvRg9GH0LDQuTog0LXRgdC70LggbiA8PSAxLCDQstC+0LfQstGA0LDRidCw0LXQvCDQsNC60LrRg9C80YPQu9GP0YLQvtGAIChhY2MpCiAgICAgICAgICAgICAgICAgYWNjCiAgICAgICAgICAgICAgICAgKGZhY3QtaXRlciAoLSBuIDEpICgqIG4gYWNjKSkpKSkgOyDQoNC10LrRg9GA0YHQuNCy0L3Ri9C5INCy0YvQt9C+0LIKICAgIChmYWN0LWl0ZXIgbiAxKSkpICAgICAgICAgOyDQktGL0LfQvtCyINC70L7QutCw0LvRjNC90L7QuSDRhNGD0L3QutGG0LjQuCDRgSDQvdCw0YfQsNC70YzQvdGL0LzQuCDQt9C90LDRh9C10L3QuNGP0LzQuAoKOzsg0J/RgNC40LzQtdGAINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPOgooZm9ybWF0IHQgItCk0LDQutGC0L7RgNC40LDQuyA2IChmYWN0b3JpYWwtbGV0LCDQktC+0YHRhdC+0LTRj9GJ0LDRjyDRgNC10LrRg9GA0YHQuNGPKTogfkF+JSIgKGZhY3RvcmlhbC1sZXQgNikpCgooZGVmdW4gZmFjdG9yaWFsLWxldC1kb3duIChuKQogIChsYWJlbHMgKChmYWN0LXJlYyAoeCkgICAgICA7INCe0L/RgNC10LTQtdC70Y/QtdC8INC70L7QutCw0LvRjNC90YPRjiDRhNGD0L3QutGG0LjRjiBmYWN0LXJlYyDRgSBgbGFiZWxzYAogICAgICAgICAgICAgICAgICAgICAoaWYgKDw9IHggMSkKICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgOyDQkdCw0LfQvtCy0YvQuSDRgdC70YPRh9Cw0LkKICAgICAgICAgICAgICAgICAgICAgICAgICgqIHggKGZhY3QtcmVjICgtIHggMSkpKSkpKSA7INCg0LXQutGD0YDRgdC40LLQvdGL0Lkg0LLRi9C30L7QsgogICAgKGZhY3QtcmVjIG4pKSkgICAgICA7INCS0YvQt9GL0LLQsNC10Lwg0LvQvtC60LDQu9GM0L3Rg9GOINGE0YPQvdC60YbQuNGOCgo7OyDQn9GA0LjQvNC10YAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y86Cihmb3JtYXQgdCAi0KTQsNC60YLQvtGA0LjQsNC7IDYgKGZhY3RvcmlhbC1sZXQtZG93biwg0J3QuNGB0YXQvtC00Y/RidCw0Y8g0YDQtdC60YPRgNGB0LjRjyk6IH5BfiUiIChmYWN0b3JpYWwtbGV0LWRvd24gNikpCg==
Факториал 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
0x150159800000 - 0x150159ae4fff
0x150159c15000 - 0x150159c39fff
0x150159c3a000 - 0x150159dacfff
0x150159dad000 - 0x150159df5fff
0x150159df6000 - 0x150159df8fff
0x150159df9000 - 0x150159dfbfff
0x150159dfc000 - 0x150159dfffff
0x150159e00000 - 0x150159e02fff
0x150159e03000 - 0x15015a001fff
0x15015a002000 - 0x15015a002fff
0x15015a003000 - 0x15015a003fff
0x15015a080000 - 0x15015a08ffff
0x15015a090000 - 0x15015a0c3fff
0x15015a0c4000 - 0x15015a1fafff
0x15015a1fb000 - 0x15015a1fbfff
0x15015a1fc000 - 0x15015a1fefff
0x15015a1ff000 - 0x15015a1fffff
0x15015a200000 - 0x15015a203fff
0x15015a204000 - 0x15015a403fff
0x15015a404000 - 0x15015a404fff
0x15015a405000 - 0x15015a405fff
0x15015a49c000 - 0x15015a49ffff
0x15015a4a0000 - 0x15015a4a0fff
0x15015a4a1000 - 0x15015a4a2fff
0x15015a4a3000 - 0x15015a4a3fff
0x15015a4a4000 - 0x15015a4a4fff
0x15015a4a5000 - 0x15015a4a5fff
0x15015a4a6000 - 0x15015a4b3fff
0x15015a4b4000 - 0x15015a4c1fff
0x15015a4c2000 - 0x15015a4cefff
0x15015a4cf000 - 0x15015a4d2fff
0x15015a4d3000 - 0x15015a4d3fff
0x15015a4d4000 - 0x15015a4d4fff
0x15015a4d5000 - 0x15015a4dafff
0x15015a4db000 - 0x15015a4dcfff
0x15015a4dd000 - 0x15015a4ddfff
0x15015a4de000 - 0x15015a4defff
0x15015a4df000 - 0x15015a4dffff
0x15015a4e0000 - 0x15015a50dfff
0x15015a50e000 - 0x15015a51cfff
0x15015a51d000 - 0x15015a5c2fff
0x15015a5c3000 - 0x15015a659fff
0x15015a65a000 - 0x15015a65afff
0x15015a65b000 - 0x15015a65bfff
0x15015a65c000 - 0x15015a66ffff
0x15015a670000 - 0x15015a697fff
0x15015a698000 - 0x15015a6a1fff
0x15015a6a2000 - 0x15015a6a3fff
0x15015a6a4000 - 0x15015a6a9fff
0x15015a6aa000 - 0x15015a6acfff
0x15015a6af000 - 0x15015a6affff
0x15015a6b0000 - 0x15015a6b0fff
0x15015a6b1000 - 0x15015a6b1fff
0x15015a6b2000 - 0x15015a6b2fff
0x15015a6b3000 - 0x15015a6b3fff
0x15015a6b4000 - 0x15015a6bafff
0x15015a6bb000 - 0x15015a6bdfff
0x15015a6be000 - 0x15015a6befff
0x15015a6bf000 - 0x15015a6dffff
0x15015a6e0000 - 0x15015a6e7fff
0x15015a6e8000 - 0x15015a6e8fff
0x15015a6e9000 - 0x15015a6e9fff
0x15015a6ea000 - 0x15015a6eafff
0x561b3c4a5000 - 0x561b3c595fff
0x561b3c596000 - 0x561b3c69ffff
0x561b3c6a0000 - 0x561b3c6fffff
0x561b3c701000 - 0x561b3c72ffff
0x561b3c730000 - 0x561b3c760fff
0x561b3c761000 - 0x561b3c764fff
0x561b3d747000 - 0x561b3d767fff
0x7ffcb2348000 - 0x7ffcb2368fff
0x7ffcb23e8000 - 0x7ffcb23ebfff
0x7ffcb23ec000 - 0x7ffcb23edfff