我很难找到一个简单的嵌套if语句。我有两个功能divisible2?和divisible3?我想知道一个数字是否可以被2和3整除。这就是我到目前为止所拥有的数字:
(define (divisible2? x)
(zero? (remainder 2 x))) ;
(define (divisible3? x)
(zero? (remainder 3 x))) ;
(define (div23 n)
(if (divisible2? n)
(if (divisible3? n)) #t (#f))
)
由于
答案 0 :(得分:3)
有几个问题。一个是内部括号错误 - if
使得它在表单中具有 no true-expr或false-expr。后面的假括号也是有问题的。此外,每个if
都应该同时提供true-expr和false-expr(虽然这在方言上有所不同,IIRC)。
可以以校正的扩展形式看到对称结构。
(if (divisible2? n) ; outer if-expr
(if (divisible3? n) ; outer then-expr (and inner if-expr)
#t ; inner then-expr
#f) ; inner else-expr
#f) ; outer else-expr
或者,只需使用and
。
(and (divisible2? n) (divisible3? n))
你可以让divisible?
函数接受“可被整除”值。