2017-02-01 5 views
0

Я должен использовать DrRacket для этой проблемы, но каждый раз, когда я запускаю код, я получаю это сообщение об ошибке «gcd: это имя было определено ранее и не может быть повторно установлено, определены». (Также выбрать язык как Advanced студента [ИНДИВИДУАЛЬНЫЙ] DrRacket ниже мой код, его рекурсивная функция, чтобы найти наибольший общий делитель:.gcd: это имя было определено ранее и не может быть переопределено

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

ответ

2

gcd функция уже предусмотрена в рамках Advanced язык Студент as you can see in the documentation here. в отличие от полного языка ракетка, языки обучения не позволяют определение функции с тем же именем, что и функции библиотеки. Обратите внимание, что если вы удалите ваше определение gcd, все тесты проходят.

Если это домашнее задание , то вам, вероятно, нужно будет назвать функцию gcd чем-то еще. ssignment требует, чтобы ваша функция называлась gcd, тогда, вероятно, проблема с назначением.

+0

oh да меняет название, но теперь я столкнулся с функцией ошибки. Я изменил его на gcd-struct и получил этот «gcd-expects 2 аргумента», но нашел только 1: ожидает 2 аргумента, но нашел только 1 ». Я весьма озадачен. –

+0

На самом деле вы знаете, что я нашел проблему с проверкой, это не может быть 0 или что-то еще. только 2 аргумента, поэтому второй check-expect является правильной формой. хорошо это говорит людям о том, как глупо я иногда получаю ха-ха ... эй спасибо за вашу помощь. –