gpt4 book ai didi

clojure - 如何通过递归制作列表?

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

在许多情况下,我想通过递归函数制作列表,但我找不到正确的方法。

例如(没有用但我能找到最短的)我想一个一个地从列表中取出元素并创建与第一个列表相同的新列表。

(defn f [x] (list 
(first x)
(if (not= (rest x) '())
(f (rest x))
'()
)))

(f '(1 2 3))

我想得到

(1 2 3)

但是我明白了

(1 (2 (3 ())))

我不想使用展平。例如这个输入

(f '([1 1] [2 2] [3 3]))

会被flatten销毁。

最佳答案

cons替换list:

(defn f [x] 
(cons (first x)
(if (not= (rest x) '())
(f (rest x))
'())))

操作 (list x y) 返回两个元素的列表:(x y)。操作 (cons x y) 返回头部(即第一个元素)为 x 和尾部(列表的其余部分)为 y 的列表,其中 y 应该是列表本身。

关于clojure - 如何通过递归制作列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14932414/

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