Scheme 使用列表反转数字的数字
我想通过在Scheme中使用列表来反转数字。到目前为止,我的逻辑是将数字的模乘以10,然后将该数字附加到列表中。在每次递归调用中,该数字通过除以10来减少。到目前为止,我的代码如下:Scheme 使用列表反转数字的数字,scheme,Scheme,我想通过在Scheme中使用列表来反转数字。到目前为止,我的逻辑是将数字的模乘以10,然后将该数字附加到列表中。在每次递归调用中,该数字通过除以10来减少。到目前为止,我的代码如下: (define (reverse n L) (let ((r (remainder n 10))) (if (= n 0) L (begin ((append L (list r)) (reverse (/ n 10) L)))))
(define (reverse n L)
(let ((r (remainder n 10)))
(if (= n 0)
L
(begin
((append L (list r))
(reverse (/ n 10) L))))))
remainder: contract violation
expected: integer?
given: 123/10
argument position: 1st
other arguments...:
我遇到的问题是,当我输入一个值时,例如123,如下所示:
(define (reverse n L)
(let ((r (remainder n 10)))
(if (= n 0)
L
(begin
((append L (list r))
(reverse (/ n 10) L))))))
remainder: contract violation
expected: integer?
given: 123/10
argument position: 1st
other arguments...:
我错过了什么?感谢Scheme中的当你除以两个整数时,得到的结果是整数或比率
123/10
是一个比率(因为不能将123除以10得到整数)
如果要将其转换为整数,则必须floor
或ceil
将其转换为整数