【发布时间】:2015-03-23 05:00:52
【问题描述】:
我无法让它正常工作。它应该采用两个可能不同长度的列表,并将元素一起添加到一个列表中。
例如,(polyAdd '(1 2 3 4) '(1 2 3)) 将产生 (2 4 6 4)。
这是我现在的程序。我认为它应该可以工作,但它只是打印出来(2 4 6),我不明白。
这是程序:
(define (polyAdd l ll)
(let ((num (- (length l) (length ll))))
(if (> num 0)
(append ll (nzero num))
(append l (nzero (- 0 num)))))
(if (not (or (= (length l) 1) (= (length ll) 1)))
(cons (+ (car l) (car ll)) (polyAdd (cdr l) (cdr ll)))
(cons (+ (car l) (car ll)) '())))
(define (nzero n)
(if (= n 0)
'()
(cons 0 (nzero (- n 1)))))
感谢 Sylwester,我只需在附加前添加 (set! ll 即可使其正常工作。
【问题讨论】:
-
从未使用过
append的结果。它不会改变任何值。