поменять местами цифры, используя список - PullRequest
0 голосов
/ 30 сентября 2019

Я хотел бы поменять местами цифры с помощью списка в схеме. Пока что моя логика состоит в том, чтобы получить модуль по модулю числа на 10 и добавить это число в список. В каждом рекурсивном вызове число уменьшается путем деления его на 10. До сих пор мой код был следующим:

(define (reverse n L)
 (let ((r (remainder n 10)))
    (if (= n 0)
        L
        (begin
          ((append L (list r))
           (reverse (/ n 10) L))))))

Проблема, которую я получил, заключается в том, что при вводе значения, например 123, следующее:

remainder: contract violation
  expected: integer?
  given: 123/10
  argument position: 1st
  other arguments...:

Чего мне не хватает? Спасибо

1 Ответ

1 голос
/ 30 сентября 2019

В схеме при делении двух целых чисел в результате вы получите целое число или коэффициент . 123/10 - это отношение (потому что вы не можете разделить 123 на 10 и получить целое число).

Если вы хотите преобразовать его в целое число, вы должны floor или ceil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...