我一直在接收"对象5.32不适用"运行后(主1 2)然后输入2,最后输出-1。 5.32是正确的答案。它只是抛出提到的错误。 (应该返回;值5.32)。
我认为我的问题可能出在我的税务职能部门,但我不确定。有什么建议吗?
(define (add total num)(+ total num))
(define (tax total) (* total 1.065))
(define (main total x)
(if (= x -1)
(tax total)
((let ((z (add total x)))(let ((y (read)))(main z y))))
)
)
答案 0 :(得分:2)
if
中第三个表达式周围有一组额外的括号。语法是:
(if <condition>
<true-expression>
<false-expression>)
但你写道:
(if <condition>
<true-expression>
(<false-expression>))
将表达式放在括号中会将其转换为过程调用,并尝试将let
返回的值用作过程。
也不需要使用多个let
,您可以一次绑定多个变量。
(define (main total x)
(if (= x -1)
(tax total)
(let ((z (add total x))
(y (read)))
(main z y)))))