Я новичок на Схеме, поэтому простите вопрос: у меня есть функция, которая вычисляет факториалы списка чисел, но это дает мне период до последнего числа в Результаты. Где я иду не так?Схема факториала (факт * l) Вопрос
код:
#lang scheme
(define fact
(lambda (n)
(cond
((= n 0) 1)
((= n 1) 1)
(else (* n (fact (- n 1)))))))
(define fact*
(lambda (l)
(cond
((null? (cdr l)) (fact (car l)))
(else
(cons (fact (car l)) (fact* (cdr l)))))))
выход:
> (fact* '(3 6 7 2 4 5))
(6 720 5040 2 24 . 120)
Спасибо! Есть ли способ сделать это с помощью примитивов Scheme? Является ли список примитивным? – Isaac
Я отредактировал, чтобы добавить вторую реализацию после вашего комментария выше. Отвечает ли это на ваш вопрос? –
А, отлично! Знание «Маленького Schemer» было забыто на мгновение. Спасибо! – Isaac