sicp 习题2.22

来源:互联网 发布:cv 数据库 编辑:程序博客网 时间:2024/06/14 09:58

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 '()))


原创粉丝点击