저는 Scheme의 초보자입니다. 질문을 용서하십시오. 숫자 목록의 계승을 계산하는 함수가 있지만, 그 숫자의 마지막 숫자 앞에 마침표가 나타납니다. 결과. 내가 어디로 잘못 가고 있니?Scheme Factorial (사실 * l) Question
코드 :
#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
위 의견에 따라 두 번째 구현을 추가하기 위해 편집했습니다. 그 질문에 대답합니까? –
아, 멋지다! 저의 "작은 교수자"지식은 잠시 잊혀졌습니다. 고맙습니다! – Isaac