gpt4 book ai didi

scheme - 计数变化 SICP

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:03 24 4
gpt4 key购买 nike

我在阅读 SICP 时遇到了一个问题,在第 1 章中有一个名为 counting change 的示例,我需要在 scheme 中编写一个程序来计算给定一半的任何给定数字的可能变化方式- 美元、25 美分、10 美分、镍币和便士。这本书显示了程序的替换模型,我试图将其更改为嵌套模型但失败了,谁能帮我一个忙?

(define (count_change total_amount)

(define (denomination kinds_of_coins)
(cond ((= kinds_of_coins 5) 50)
((= kinds_of_coins 4) 25)
((= kinds_of_coins 3) 10)
((= kinds_of_coins 2) 5)
((= kinds_of_coins 1) 1)))

(define (cc amount kinds_of_coins)
(cond (= amount 0) 1)
((or (< amount 0) (= kinds_of_coins 0)) 0)
(else (+ (cc amount (- kinds_of_coins 1))
(cc (- amount (denomination kinds_of_coins)) kinds_of_coins))))

(cc total_amount 5))

执行结果如下:

;Ill-formed clause: 1

最佳答案

cond 表达式通常采用 (cond (predicate expr) ... (else expr))(cond (predicate expr) .. . (#t expr))。每当谓词的计算结果为真时,子句中对应的表达式就是条件表达式的结果。如果末尾没有 else/#t 谓词并且条件表达式上的所有谓词都是假的,通常表达式会返回一个 void 值。

在这里,你有一个语法错误,因为你没有正确地开始一个子句。因此,您应该使用 (cond ((= amount 0) 1) ...) 而不是 (cond (= amount 0) 1)

关于scheme - 计数变化 SICP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41824550/

24 4 0
文章推荐: python - Scikit-learn的fetch不下载数据集
文章推荐: css -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com