fork download
  1. (defun factorial-lambda (n)
  2. (labels ((fact-iter (n acc) ; Локальная функция fact-iter
  3. (if (<= n 1)
  4. acc ; Базовый случай
  5. (fact-iter (- n 1) (* n acc))))) ; Рекурсивный вызов
  6. (fact-iter n 1))) ; Вызов локальной функции
  7.  
  8. ;; Пример использования:
  9. (format t "Факториал 6 (factorial-lambda, Восходящая рекурсия): ~A~%" (factorial-lambda 6))
  10.  
  11.  
  12. (defun factorial-lambda-down (n)
  13. (labels ((fact-rec (x)
  14. (if (<= x 1)
  15. 1
  16. (* x (fact-rec (- x 1))))))
  17. (fact-rec n)))
  18.  
  19.  
  20. ;; Пример использования:
  21. (format t "Факториал 6 (factorial-lambda-down, Нисходящая рекурсия): ~A~%" (factorial-lambda-down 6))
  22.  
  23.  
  24. (defun factorial-let (n)
  25. (labels ((fact-iter (n acc) ; Локальная функция fact-iter
  26. (if (<= n 1) ; Базовый случай: если n <= 1, возвращаем аккумулятор (acc)
  27. acc
  28. (fact-iter (- n 1) (* n acc))))) ; Рекурсивный вызов
  29. (fact-iter n 1))) ; Вызов локальной функции с начальными значениями
  30.  
  31. ;; Пример использования:
  32. (format t "Факториал 6 (factorial-let, Восходящая рекурсия): ~A~%" (factorial-let 6))
  33.  
  34. (defun factorial-let-down (n)
  35. (labels ((fact-rec (x) ; Определяем локальную функцию fact-rec с `labels`
  36. (if (<= x 1)
  37. 1 ; Базовый случай
  38. (* x (fact-rec (- x 1)))))) ; Рекурсивный вызов
  39. (fact-rec n))) ; Вызываем локальную функцию
  40.  
  41. ;; Пример использования:
  42. (format t "Факториал 6 (factorial-let-down, Нисходящая рекурсия): ~A~%" (factorial-let-down 6))
  43.  
Success #stdin #stdout #stderr 0.02s 9432KB
stdin
Standard input is empty
stdout
Факториал 6 (factorial-lambda, Восходящая рекурсия): 720
Факториал 6 (factorial-lambda-down, Нисходящая рекурсия): 720
Факториал 6 (factorial-let, Восходящая рекурсия): 720
Факториал 6 (factorial-let-down, Нисходящая рекурсия): 720
stderr
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