我正在学习Scheme,所以我正在做一个有两个功能的程序,根据飞行的人数和飞机上的座位数来计算飞机的数量。直到那里一切正常,问题是当我尝试在另一个中使用该功能时,我不知道该怎么做。
第一个功能:
(define calculate-aeroplanes
(lambda (passengers seats)
(ceiling (/ passengers seats))))
关于第二项功能,我想为每架飞机收取1000美元的费用,如果它少于11架飞机,从第11架飞机开始费用为500美元,每位乘客将收取50美元的费用
我在这里做了什么:
(define fee-airport
(lambda (passengers seats)
(cond
((< calculate-aeroplanes (passengers seats) 11)
(+ (* calculate-aeroplanes 1000)
(* passengers 50)))
((> calculate-aeroplanes (passengers seats) 10)
(+ (* calculate-aeroplanes (passengers seats) 10000)
(* (- calculate-aeroplanes (passengers seats) 10) 500)
(* passengers 50))))))
答案 0 :(得分:3)
Scheme中函数调用的语法是(function-name arguments)
,而不是function-name(arguments)
。在调用<
,+
等时,您使用正确的语法,但在调用calculate-aeroplanes
时却没有。
答案 1 :(得分:1)
在您的代码示例中,您使用的是+
。 +
无论如何都不是特别的,它只是一个简单的功能。要应用函数,只需将其放在表单的开头即可。
(calculate-aeroplanes passenger seats)
将使用乘客和座位参数调用计算飞机)
答案 2 :(得分:-1)
是语法问题,谢谢这里的新代码:
(define fee-airport
(lambda(passengers seats)
(calculate-aeroplanes passengers seats)
(cond
((< (calculate-aeroplanes passengers seats) 11)
(+ (* (calculate-aeroplanes passengers seats)1000) (* passengers
50)))
((> (calculate-aeroplanes passengers seats) 10)
(+ (* (calculate-aeroplanes passengers seats )10000) (* (-
(calculate-aeroplanes passengers seats) 10) 500) (* passengers
50))))
)
)