gpt4 book ai didi

list - 如何在 Lisp 中创建列表的子列表?

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

当我的第一个数字小于下一个数字时,我想制作给定列表的子列表。我已经写了一些东西但它不起作用,它说'NIL ist not a real number'我希望有人能进一步帮助我

(defun order(lst)
(cond ((null lst) nil)
(t (if (< (car lst) (cadr lst))
(cons (car lst) (cadr lst))) (order (rest lst)))))


(print(order '(1 4 5 12 22 34 7 9 0)))

//Output should be this -->((1 4 5) (12 22 34) (7 9) (0))

最佳答案

因为这看起来像是家庭作业,所以只是一些提示:

  1. 现在您只是在构建一个新的列表,其中的 cons 恰好是两个长度。考虑一下您希望递归如何在必要时扩展这个新列表或在“关闭”它之前包含新元素。

  2. 当您找到一个已排序的对时,您不会调用任何进一步的递归。您的代码刚刚结束。

  3. 如果两个被比较的元素没有排序,你对旧的 head 什么都不做,你只是丢弃它。总体而言,您的算法过程中没有生成“外部”列表。

  4. 现在 cadr 可能会排到列表末尾。所以 < 将调用一个数字和 nil,这会导致灾难。

关于list - 如何在 Lisp 中创建列表的子列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461548/

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