我想实现一个函数来计算具有组件的零件的成本。 请您检查一下是否正确? 球拍 说:
总成本:不是名字
(定义结构部分(命名成本组件)) ;一部分是一个结构 ; interp 一个零件的名称成本和组成部分 (define PartSig(签名(PartOf字符串编号(ListOfPartSig)))) (定义零件1(制造零件表40 (列表(使部分前 10 个为空) (使零件腿 5 为空))))
(: 总成本 (PartSig -> 数字)) ;计算零件的总成本 (检查-预期(总成本第 1 部分)55) (定义(总成本部分) (+(部分成本部分) (成本构成(部分-构成部分))))
(: 成本组件 (ListOf PartSig -> number)) ;计算每个组件的成本 (检查-预期(成本构成(部分-成本部分1)15)) (定义(成本构成要素) (如果((空?组件)0) (成本构成(其余构成))))
按如下方式修改您的代码:
#lang racket
(define-struct part (name cost components))
(define part1
(make-part 'table 40 (list (make-part 'top 10 empty) (make-part 'leg 5 empty))))
(define (component-cost components)
(if (empty? components)
0
(+ (part-cost (first components))
(component-cost (rest components)))))
(define (total-cost part)
(+ (part-cost part)
(component-cost (part-components part))))
示例:
> (component-cost (part-components part1))
15
> (total-cost part1)
55