运行 (main 1 2) 然后输入 2 最后输入 -1 后,我一直收到“对象 5.32 不适用”。 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))))
)
)
是的,我检查了here
和 here ,尽管这两个位置都没有以一般格式回答问题。
if
中的第三个表达式周围有一组额外的括号。语法是:
(if <condition>
<true-expression>
<false-expression>)
但是你写道:
(if <condition>
<true-expression>
(<false-expression>))
将表达式放在括号中会将其变成过程调用,它会尝试将 let
返回的值用作过程。
也没有必要使用多个 let
,您可以一次绑定(bind)多个变量。
(define (main total x)
(if (= x -1)
(tax total)
(let ((z (add total x))
(y (read)))
(main z y)))))