05/05/12 23:02:53
>>13 乙です。
末尾再帰
(define fact
(lambda (n)
(letrec ((fact-tailrecursion
(lambda (n prod)
(if (= n 1)
prod
(fact-tailrecursion (- n 1) (* prod n)) ) ) ))
(fact-tailrecursion n 1) ) )
上記の末尾再帰は、下記のiterationと等価。
(define fact-iteration
(lambda (n)
(do ((n n (- n 1))
(prod 1 (* prod n)) )
((= n 1) prod) ) ) )