gcd:此名称先前已定义,无法重新定义

时间:2017-02-01 16:30:33

标签: racket racket-student-languages

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

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

1 个答案:

答案 0 :(得分:2)

gcd功能已作为高级学生语言as you can see in the documentation here的一部分提供。与完整的Racket语言不同,教学语言不允许定义与库函数同名的函数。请注意,如果删除gcd的定义,则所有测试都会通过。

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