我想创建一个数字列表二进制文件,我做了一个函数来制作二进制文件(列表1和0),但是当我尝试将这些列表引入列表时出现问题。
(define make (lambda (bin s)
(if (= s 0)
(display bin)
(make (cons (random 2) bin) (- s 1)))))
(define insert (lambda (ls a)
(if (= a 0)
(display ls)
(insert (cons make ls) (- a 1)))))
答案 0 :(得分:0)
如果你的程序正在构建一个列表作为输出,那么在基本情况下不要display
,它会与递归混淆。此外,你没有正确调用make
,你应该传递两个参数。并且insert
没有在任何地方插入元素......让我们重新开始,是吗?
(define make
(lambda (bin s)
(if (= s 0)
bin
(make (cons (random 2) bin) (- s 1)))))
(make '() 5)
=> '(1 0 0 1 1)
(define insert
(lambda (ls e a)
(if (= a 0)
(cons e ls)
(cons (car ls)
(insert (cdr ls) e (- a 1))))))
(insert '(1 2 4) 3 2)
=> '(1 2 3 4)