0

我必须使用 DrRacket 来解决这个问题,但每次运行代码时,我都会收到此错误消息“gcd:此名称是以前定义的,无法重新定义”。(我也在 DrRacket 中选择了 Advanced student [custom] 的语言。下面是我的代码,它是一个递归函数来找到最大公约数:

(define (gcd n m)
   (cond [(= m 0) n]
    [else (gcd m (modulo n m))]))

 (check-expect (gcd 0) 0)
 (check-expect (gcd 12 8) 4)
 (check-expect (gcd 6 12 8) 2)
4

1 回答 1

2

gcd功能已作为高级学生语言的一部分提供,您可以在此处的文档中看到。与完整的 Racket 语言不同,教学语言不允许定义与库函数同名的函数。请注意,如果您删除 的定义gcd,则所有测试都会通过。

如果这是家庭作业,那么您可能需要将您的gcd函数命名为其他名称。如果分配要求您的函数被命名gcd,那么分配可能存在问题。

于 2017-02-01T18:34:32.363 回答