我的不成熟的代码:
;重新定义make-sum过程,接受参数列表, 并整合成一个和式
(define (make-sum . items)
(define (iter result x)
(if (null? x)
result
(let ((first (car x)))
(if (=number? first 0)
(iter result (cdr x))
(iter (append result (list first))
(cdr x))))))
(let ((add (iter '() items)))
(if (null? (cdr add))
(car add)
(append '(+) add))))
;重新定义过程make-product, 接受参数列表, 并整合成一个乘式
(define (make-product . items)
(define (iter result x)
(if (null? x)
result
(let ((first (car x)))
(cond ((=number? first 0) (list 0))
((=number? first 1)
(iter result (cdr x)))
(else (iter (append result (list first))
(cdr x)))))))
(let ((mul (iter '() items)))
(if (null? (cdr mul))
(car mul)
(append '(*) mul))))
我的不成熟的代码:
;重新定义make-sum过程,接受参数列表, 并整合成一个和式
(define (make-sum . items)
(define (iter result x)
(if (null? x)
result
(let ((first (car x)))
(if (=number? first 0)
(iter result (cdr x))
(iter (append result (list first))
(cdr x))))))
(let ((add (iter '() items)))
(if (null? (cdr add))
(car add)
(append '(+) add))))
;重新定义过程make-product, 接受参数列表, 并整合成一个乘式
(define (make-product . items)
(define (iter result x)
(if (null? x)
result
(let ((first (car x)))
(cond ((=number? first 0) (list 0))
((=number? first 1)
(iter result (cdr x)))
(else (iter (append result (list first))
(cdr x)))))))
(let ((mul (iter '() items)))
(if (null? (cdr mul))
(car mul)
(append '(*) mul))))