首页 > 解决方案 > DrRacket:在左括号后需要一个函数

问题描述

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

函数调用:在左括号后需要一个函数,但收到 1。

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

标签: racket

解决方案


最后一行有一个放错位置的括号。这应该解决它:

(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)))))

推荐阅读