所以; 我是一个正在尝试通过 SICP 工作的爱好者(它是免费的!),第一章中有一个示例程序,旨在计算用美国硬币找零的可能方法;(change-maker 100) => 292. 它的实现如下:
(define (change-maker amount)
(define (coin-value n)
(cond ((= n 1) 1)
((= n 2) 5)
((= n 3) 10)
((= n 4) 25)
((= n 5) 50)))
(define (iter amount coin-type)
(cond ((= amount 0) 1)
((or (= coin-type 0) (< amount 0)) 0)
(else (+ (iter amount
(- coin-type 1))
(iter (- amount (coin-value coin-type))
coin-type)))))
(iter amount 5))
反正; 这是一个树递归过程,作者“作为一个挑战离开”找到一个迭代过程来解决相同的问题(即固定空间)。在感到沮丧之后,我没有运气弄清楚这一点或找到答案。我想知道这是我的脑放屁,还是作者在和我开玩笑。