当前位置: 代码迷 >> 综合 >> sicp 习题2.22
  详细解决方案

sicp 习题2.22

热度:67   发布时间:2024-01-11 16:33:11.0

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