我正在尝试解决一个基本功能。但我得到了一个错误,我的第二个if语句和else.Ff你可以给我一个帮助这里是代码。if else construction
(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你可以给我一个帮助这里是代码。if else construction
(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
(将它想象为一系列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)))
sie senior grande muchachos – 2012-07-23 14:41:26
和(> X 1)(= X 1)是ALWAYSE假
和(<×2)(= X 2)总是假
没有操作者连接工作与第二个如果
所以如果我想要1 <= x <= 2如何在方案中表示它 – 2012-07-23 14:18:23
我不知道谢姆,但我认为它就像前缀符号一样。和(> x 0)(
@不重要:我发布那个答案3分钟前 – 2012-07-23 14:20:02
,如果条件是(if (condition) (consequent) (alternate))
格式。 else
不能与if
一起使用。下面是相同的代码,而无需使用电导率/其他
(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))))
我不知道的计划,但会不会是你的意思'or's,而不是'and's? – 2012-07-23 14:14:59
不,因为两个条件都需要是真的,我认为现在它只检查第二部分的第一部分,如果 – 2012-07-23 14:16:06
x不能大于等于1但大于或等于1 .. – 2012-07-23 14:17:18