代码如下:
(define make-simple-sv-num
(lambda (delare)
(let ((tal (random-from-to 100000 1000000)))
(cond ((= (divisible? (sum-of-digits tal) delare) #t) tal)
(else (make-simple-sv-num))))))
所以我的规范是生成一个随机的6位数,它也可以被输入变量"delare“除以。
我对代码的思考过程是将"tal“绑定到随机数上,然后在计算中使用它,如果验证无误,它将返回"tal”中的数字。然而,如果它不满足条件,它将调用自己,我的想法是,当它这样做时,它会给"tal“一个新的随机数,并继续这样做,直到条件满足,从而给我想要的类型的数字。
我得到了这个错误,但我不知道如何修复它
=: contract violation
expected: number?
given: #t
argument position: 1st
other arguments...:
发布于 2017-01-31 10:19:28
我认为你的代码可以简单得多,就像:
(define (make-simple-sv-num declare)
(let ([tal (random-from-to 100000 1000000)])
(if (divisible? (sum-of-digits tal) delare)
tal
(make-simple-sv-num declare))))
https://stackoverflow.com/questions/41913609
复制相似问题