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)
)
Run Code Online (Sandbox Code Playgroud)
您的代码中存在多个错误.并且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)))
Run Code Online (Sandbox Code Playgroud)
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)))
Run Code Online (Sandbox Code Playgroud)
或者替代地
(define (equation2 x)
(if (< x 1)
0
(if (> x 2)
(+ (- (* x x) x) 4)
(/ 1 x))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23734 次 |
| 最近记录: |