0

我很难让一个简单的嵌套 if 语句起作用。我有两个功能divisible2?和可分割的3?我想看看某个数字 - n 是否可以被 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))
 )

谢谢

4

1 回答 1

3

有几个问题。一个是inner-周围的括号是错误的,if因此它在表单中没有true-expr或false-expr。后面的 false 括号也是有问题的。此外,everyif应该同时提供 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?函数采用“除以”值。

于 2014-01-22T04:28:08.677 回答