【发布时间】:2019-06-28 22:45:40
【问题描述】:
对于这么简单的问题,我感到非常抱歉。太琐碎了,我一直无法在网上找到有这个问题的人。因此,我将不胜感激。
我想编写一个非常简单的函数,它接受一个列表和一个项目,并将该项目附加到列表的末尾。
我编写的函数递归到列表的末尾并返回新项目。令人沮丧的是,这不起作用。这是我见过的最简单的函数
(define (my-append lst item)
(if (null? lst)
item
(cons (car lst) (my-append (cdr lst) item))))
(display (my-append (list 1 2 3 4) 5))
这显示
(1 2 3 4 . 5)
我不知道为什么会有那个点,这非常令人沮丧。我在以前的任何 SO 问题中都没有遇到过。
我只是想看看
(1 2 3 4 5)
我真的很感激一些帮助,因为我对此感到非常沮丧。如果有帮助,我正在使用在线编译器运行此代码 https://repl.it/languages/scheme
【问题讨论】:
-
事后看来:)你可以尝试一下,在
(my-append (list 1 2 3 4) 5)之后你可以尝试例如(my-append (list 1 2 3 4) (list 5 6))并以这种方式获得想法。所以你看, your-append 是一个非常好的和正常的附加,它只需要一个列表作为它的第二个参数以及第一个参数,将这两个列表附加在一起。所以在不改变函数定义的情况下,你可以改变使用它的方式。 -
关于这个的previous SO questions很多。