码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-12-25 01:30:03      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:

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)解题总结:列表的遍历

标签:

原文地址:http://blog.csdn.net/keyboardota/article/details/39440223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!