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 9632KB
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
  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