gpt4 book ai didi

list - 方案 - 追加到列表的末尾

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:31 25 4
gpt4 key购买 nike

对于这么简单的问题,我感到非常抱歉。这太琐碎了,我一直没能在网上找到有这个问题的人。所以我很感激一些帮助。

我想编写一个非常简单的函数,它接受一个列表和一个项目,并将该项目 append 到列表的末尾。

我写的函数递归地走到列表的末尾并返回新的项目。令人沮丧的是,这不起作用。这是我见过的最简单的函数

(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

最佳答案

你只需要用一个列表结束递归,而不是一个项目。而不是这个:

(if (null? lst)
item

这样做:

(if (null? lst)
(list item)

澄清一下——Scheme 中的列表必须以空列表 '() 结尾。如果你的递归以一个项目结束,你最终会得到这样的东西:

(cons 4 5)
=> '(4 . 5)

这是一个缺点 。一个正确的列表以空列表结尾:

(cons 4 (cons 5 '()))
=> '(4 5)

这与:

(cons 4 (list 5))
=> '(4 5)

顺便说一句,这是在末尾 append 项目的惯用方式:

(define (my-append lst item)
(append lst (list item)))

关于list - 方案 - 追加到列表的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56813831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com