Рекурсивная функция от одного числового аргумента N, считающая произведение чётных натуральных чисел от 2 до N - Lisp

Формулировка задачи:

Написать рекурсивную функцию от одного числового аргумента N, считавшую произведение чётных натуральных чисел от 2 до N... Не совсем разобрался ... как факториал вычислить функция вроде и есть, но как переделать таким образом чтобы брали только чётные числа?
(Defun f (n)
          (cond ((= n 0) 1) (t (* n (f (- n 1))))))

Код к задаче: «Рекурсивная функция от одного числового аргумента N, считающая произведение чётных натуральных чисел от 2 до N - Lisp»

textual
(define (!!-even n)
  (define (factorial n acc)
    (if (= n 1)
        acc
        (factorial (sub1 n) (* n acc))))
  (let ((n (if (even? n) n (sub1 n))))
    (* (expt 2 (/ n 2)) (factorial (/ n 2) 1))))
 
(map !!-even '(5 6 7 12))
;'(8 48 48 46080)

8   голосов, оценка 4.500 из 5


СОХРАНИТЬ ССЫЛКУ