我想制作一个除以两个给定数字的函数,然后将它们的商和余数放在一个列表中。除了某些情况,我已经让它工作了。这是我的代码:
(define (div dividend divisor)
(cond ((= 0 divisor) #f)
((< dividend divisor) (cons (quotient divisor dividend) (cons dividend '())))
(else
(div (- dividend divisor) divisor))))
这适用于大多数情况。
(div 13 4) returns '(4 1)
(div 3 7) returns '(2 3)
(div 5 0) returns #f ;(returns false to avoid divide by zero situations)
所有这些都完美无缺,但其中包括:
(div 16 4)
(div 4 2)
(div 15 5)
全部返回以下错误:商:未定义为0 这专注于代码:
((&lt; dividend divisor)(cons (除数除数)(cons dividend&#39;())))
有没有其他方法可以构建我需要的列表?我需要列表来包含被除数进入除数的次数和余数。
答案 0 :(得分:0)
您正确地将除数检查为0,然后在(quotient divisor dividend)
中将其反转。 13/4的商为3,余数为1,因为13 = 3 * 4 + 1。