我正在用球拍寫複印機功能。複製器函數採用符號和數字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語法,但我會盡力弄清楚。 –