如果是其他建筑

时间:2012-07-23 14:11:39

标签: if-statement scheme

我正在尝试解决一个基本功能。但我的第二个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)
  )

3 个答案:

答案 0 :(得分:6)

您的代码中存在多个错误。并且在处理多个条件时应该使用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)))

答案 1 :(得分:3)

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)))) 

答案 2 :(得分:1)

和(&gt; x 1)(= x 1)始终为假

和(&lt; x 2)(= x 2)始终为假

没有操作员可以连接第二个工作