我正在用球拍写复印机功能。复制器函数采用符号和数字L的嵌套列表,并通过在所有级别“立即复制”每个原子(符号或数字)来产生符号和数字的嵌套列表。 (a 1 bb 2 2 cc 3 3), 例如: (复制者'(a 1 b 2 c 3))产生(a 1 1 bb 2 2 cc 3 3), (复制者'((a 1)b((c))2) 。AA 1 1)BB((CC))2 2)球拍复印机功能
这是我的功能:
(define (duplicator ls)
(if (null? ls)
'()
(cons (car ls)
(cons (car ls)
(duplicator (cdr ls))))))
我的问题是(复印机“((1)b((C输出))2))是'((a 1)(a 1)bb((c))((c))2 2),这并不是我想要的。 ?
您需要条件对,如果当前元素本身是一个列表或者没有其他的解决方案。如果是的话,它不应该重复,但递归调用与内部列表作为参数的重复函数。只有当你处于最低级时,才会发生重复。我并不熟悉Racket语法,但我会尽力弄清楚。 –