无法在 SICP 中 运行 "count-change" 编码

Cann't run "count-change" code in SICP

我正在阅读 SICP,在第一章中提到了如下代码:

#lang scheme
(define (count-change amount)
  (cc amount 5))

(define (cc amount kind-of-coins)
  (cond ((= amount 0) 1)
        ((or (< amount 0) (= kind-of-coins 0)) 0)
        (else (+ (cc amount
                     (- kind-of-coins 1))
                 (cc (- amount
                        (first-denomination kind-of-coins))
                     kind-of-coins)))))

(define (first-denomination kinds-of-icons)
  (cond ((= kinds-of-icons) 1)
        ((= kinds-of-icons) 5)
        ((= kinds-of-icons) 10)
        ((= kinds-of-icons) 25)
        ((= kinds-of-icons) 50)))

(count-change 100)

我输入了 DrRacket 的代码,但我无法 运行 成功,我已经尝试了一个小时,不知道哪里出了问题。

您遇到了 first-denominations 的问题,= 需要两个操作数导致了元数错误。所以,它应该看起来像

(define (first-denomination kinds-of-icons)
  (cond ((= kinds-of-icons 1) 1)
        ...)