DrRacket:应为开括号后的函数

DrRacket:应为开括号后的函数,racket,Racket,它编译正确,但如果我尝试使用该函数,则会出现错误: 函数调用:应为开括号后的函数,但收到1 (define (euclid a b) (if (= b 0) a (if (= a 0) b (if (> a b) (euclid(- a b) b) (euclid (a (- b a) )))))) 最后一行的括号放错了地方。这应该可以解决这个问题: (define (euclid a b) (if (= b 0)

它编译正确,但如果我尝试使用该函数,则会出现错误:

函数调用:应为开括号后的函数,但收到1

(define (euclid a b)
  (if (= b 0) a
      (if (= a 0) b
          (if (> a b) (euclid(- a b) b)
              (euclid (a (- b a) ))))))

最后一行的括号放错了地方。这应该可以解决这个问题:

(define (euclid a b)
  (if (= b 0)
      a
      (if (= a 0)
          b
          (if (> a b)
              (euclid (- a b) b)
              (euclid a (- b a))))))
当您有多个嵌套条件时,最好使用
cond
,如下所示:

(define (euclid a b)
  (cond ((= b 0) a)
        ((= a 0) b)
        ((> a b) (euclid (- a b) b))
        (else (euclid a (- b a)))))