【问题标题】:Cann't run "count-change" code in SICP无法在 SICP 中运行“计数更改”代码
【发布时间】:2017-01-21 04:02:35
【问题描述】:

我正在阅读 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 中输入了代码,但我无法成功运行,我已经尝试了一个小时,不知道是什么问题。

【问题讨论】:

    标签: scheme lisp sicp


    【解决方案1】:

    first-denominations 有问题,= 需要两个操作数,从而导致元数错误。所以,它应该看起来像

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

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 2012-12-09
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      相关资源
      最近更新 更多