【发布时间】:2016-09-05 18:24:24
【问题描述】:
我正在学习这本很棒的书 SICP。尽管很棒,但它确实是一本很难的书。我遇到了长尾递归的问题,id est 是迭代过程的递归定义。 本书介绍了阶乘的这种迭代过程:
(define (factorial n)
(fact-iter 1 1 n))
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product)
(+ counter 1)
max-count)))
我尝试了一种方法而不看书上的例子。我得到了这个:
(define (factorial n)
(factorial-iter n 1 n))
(define (factorial-iter a product counter)
(if (= counter 0)
product
(factorial-iter (- a 1)
(* product a)
(- counter 1))))
我的方法在某种意义上是错误的吗?
【问题讨论】:
标签: iteration lisp racket factorial sicp