标签:
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))))
简单搞定!
标签:
原文地址:http://blog.csdn.net/keyboardota/article/details/39440223