Я пытаюсь написать итеративную процедуру для выполнения арифметики по модулю в схеме без с использованием встроенных процедур по модулю, остатку или /. Однако я столкнулся с несколькими проблемами при попытке написать код, который выглядит, как это до сих пор:Итеративный модуль с повторным вычитанием?
(define (mod a b)
(define (mod-iter a b)
(cond ((= b 0) 0)
((< b 0) (+ old_b new_b))))
(mod-iter a (- a b)))
Как вы можете видеть, я столкнулся с проблемой необходимости добавить исходное значение б току значение b. Я не знаю, как это сделать. Кроме того, когда я оставил ответ второго условного выражения примитивными данными (просто чтобы убедиться, что процедура enitre сработала), я получаю ошибку «неопределенное возвращаемое значение», и я не уверен, почему это происходит, потому что остальная часть моего кода (или так кажется?) Заранее благодарю вас за понимание.
Что такое 'old_b' и' new_b'? –
Обратите внимание, что это использование внутреннего определения, которое только что называется однажды, является отличным местом для использования «named let», как показано в [недавнем ответе @ ÓscarLópez] (http://stackoverflow.com/a/19084091/1281433). –