私は基本的な機能を解決しようとしています。しかし、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)
)
私は基本的な機能を解決しようとしています。しかし、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)
)
コードにいくつかのエラーがあります。cond
また、複数の条件を扱う場合は a を使用する必要があります(一連の IF/ELSE IF/.../ELSE ステートメントと考えてください)。
が次の値以上であるため、式がtrue に(and (> x 1) (= x 1))
なることはありません。両方の条件が同時に true になることはありません。という意味だったのかもしれませんが、それでもその表現はより簡潔に のように書くことができます。同じ考慮事項が条件にも適用されます。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))))
and (> x 1 ) (= x 1) は常に false
そして (< x 2) (= x 2) は常に false
2番目の場合に作業を接続する演算子がありません