5

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

3 回答 3

6

您的代码中有几个错误。并且您应该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)))
于 2012-07-23T14:35:29.387 回答
5

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)))) 
于 2012-07-23T17:10:26.247 回答
1

和 (> x 1 ) (= x 1) 总是假的

并且 (< x 2) (= x 2) 总是错误的

没有操作员将工作与第二个 if 连接起来

于 2012-07-23T14:15:34.513 回答