我正在尝试解决一个基本功能。但是我的第二个 if 语句和 else.Ff 出现错误,你可以给我帮助这里是代码。
(define (equation x)
(if(> x 2) (+(-(* x x) x) 4) )
(if (and (> x 1 ) (= x 1)) (and (< x 2) (= x 2)) (/ 1 x))
(else 0)
)
我正在尝试解决一个基本功能。但是我的第二个 if 语句和 else.Ff 出现错误,你可以给我帮助这里是代码。
(define (equation x)
(if(> x 2) (+(-(* x x) x) 4) )
(if (and (> x 1 ) (= x 1)) (and (< x 2) (= x 2)) (/ 1 x))
(else 0)
)
您的代码中有几个错误。并且您应该cond
在处理多个条件时使用 a(将其视为一系列 IF/ELSE IF/.../ELSE 语句)。
请注意,表达式(and (> x 1) (= x 1))
永远不会为真,因为x
大于或等于1
,两个条件永远不会同时为真。您可能的意思是(or (> x 1) (= x 1))
,但即使这样,表达式也可以更简洁地写成(>= x 1)
. 相同的考虑适用于条件(and (< x 2) (= x 2))
。
我相信这就是您的目标:
(define (equation x)
(cond ((> x 2)
(+ (- (* x x) x) 4))
((and (>= x 1) (<= x 2))
(/ 1 x))
(else 0)))
if 条件的格式为(if (condition) (consequent) (alternate))
. else
不能与 一起使用if
。这是不使用 cond/else 的相同代码
(define (equation x)
(if (> x 2)
(+ (- (* x x) x) 4)
(if (and (or (> x 1) (= x 1)) (or (< x 2) (= x 2)))
(/ 1 x)
0)))
或者,
(define (equation2 x)
(if (< x 1)
0
(if (> x 2)
(+ (- (* x x) x) 4)
(/ 1 x))))
和 (> x 1 ) (= x 1) 总是假的
并且 (< x 2) (= x 2) 总是错误的
没有操作员将工作与第二个 if 连接起来