Doe*_*ter 5 scheme if-statement
我正在尝试解决一个基本功能.但是我的第二个if语句和else会出错.如果你能在这里给我一个帮助,那就是代码.
(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))))