5

私は基本的な機能を解決しようとしています。しかし、2 番目の 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 ステートメントと考えてください)。

が次の値以上であるため、式がtrue に(and (> x 1) (= x 1))なることはありません。両方の条件が同時に true になることはありません。という意味だったのかもしれませんが、それでもその表現はより簡潔に のように書くことができます。同じ考慮事項が条件にも適用されます。x1(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

and (> x 1 ) (= x 1) は常に false

そして (< x 2) (= x 2) は常に false

2番目の場合に作業を接続する演算子がありません

于 2012-07-23T14:15:34.513 に答える