Louis 的两种方法都不对,第一种方法list 的顺序反了,第二种方法最后构造出的是一个表头为空,后面是值的序对。 list 应该表头就是第一个元素。
正确的迭代方法:
(define (square-list items)(define (iter things answer)(if (null? things)(reverse answer) ; change 当最后迭代完以后 list为逆序, 调用reverse 将逆序改为正序即可(iter (cdr things) (cons (square (car things))answer))))(iter items '()))