先不解释,直接贴出正确的代码,然后再进行执行过程分析,看看正确代码和他两次修改的代码 各自执行过程是什么样的
(defn square [x](* x x))
(defn square-list [item]
(defn iter [things answer]
(if (empty? things)
answer
; (iter (rest things) (cons (square (first things)) answer))
(cons (square (first things)) (iter (rest things) answer ))
))
(iter item nil)
)
结果
先解释我们正确的代码如何执行。第一次执行时 things参数内容为(2 3 4 5 6 6),things不为空,执行 cons部分,先将things的第一个元素计算平方