球拍 - 有人可以检查总成本代码是否正确吗?

问题描述 投票:0回答:1

我想实现一个函数来计算具有组件的零件的成本。 请您检查一下是否正确? 球拍 说:

总成本:不是名字

(定义结构部分(命名成本组件)) ;一部分是一个结构 ; interp 一个零件的名称成本和组成部分 (define PartSig(签名(PartOf字符串编号(ListOfPartSig)))) (定义零件1(制造零件表40 (列表(使部分前 10 个为空) (使零件腿 5 为空))))

(: 总成本 (PartSig -> 数字)) ;计算零件的总成本 (检查-预期(总成本第 1 部分)55) (定义(总成本部分) (+(部分成本部分) (成本构成(部分-构成部分))))

(: 成本组件 (ListOf PartSig -> number)) ;计算每个组件的成本 (检查-预期(成本构成(部分-成本部分1)15)) (定义(成本构成要素) (如果((空?组件)0) (成本构成(其余构成))))

racket dr.racket
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.