如何解决Lisp中的子列表
我无法在Lisp中创建子列表。我的任务是编写一个函数,该函数在from和to之间获取一个列表和两个索引,然后返回其子元素为from和to索引中的元素的“子列表”。我只允许使用cdr,car,cons,list和append函数。这是代码输出的示例。
子列表'(1 6 12)2 3) 输出:(6 12)
解决方法
提示:
(sublist '(1 6 12 15) 2 3)
具有与
相同的结果(sublist '(6 12 15) 1 2)
当起始索引达到1时,可以在精简元素时检查end的值;也要小心空列表。以前的表达式可以重写:
(cons 6 (sublist '(12 15) 1 1))
和
(cons 6 (cons 12 (sublist '(15) 1 0)))
最终
(cons 6 (cons 12 nil))
更准确地说,这是执行的痕迹:
USER> (sub '(1 2 3 4 5) 2 4)
0: (SUB (1 2 3 4 5) 2 4)
1: (SUB (2 3 4 5) 1 3)
2: (SUB (3 4 5) 1 2)
3: (SUB (4 5) 1 1)
4: (SUB (5) 1 0)
4: SUB returned NIL
3: SUB returned (4)
2: SUB returned (3 4)
1: SUB returned (2 3 4)
0: SUB returned (2 3 4)
(2 3 4)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。