SICP 习题 (2.17)解题总结:列表的遍历

SICP 习题 2.17 要求我们定义出过程last-pair,它返回只包含给定表里之后一个元素的表。


比如 

(last-pair (list 23 72 149 34))的结果应该是(34)


当你开始做这道题的时候你应该已经看完书中有关list操作的内容了,你应该明白car和cdr分别是什么意思,也应该知道如何通过递归调用遍历一个list。


有了以上基础的话完成习题2.17就是小菜一碟啦,基本思路就是不断对目标list进行cdr操作,直到最后一个元素为止。


在递归实现上的基本思路就是看目标list是不是只有一个元素,如果是的话就直接返回目标list,如果不是的话取(cdr 目标list),再递归判断。


实现代码如下:

(define (last-pair input-list)
  (if (null? (cdr input-list))
      input-list
      (last-pair (cdr input-list))))


简单搞定!



你可能感兴趣的:(SICP 习题 (2.17)解题总结:列表的遍历)