DrRacket:期望在左括号后有一个函数

DrRacket: expected a function after the open parenthesis

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

函数调用:在左括号后需要一个函数,但收到了 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)))))