Recursion 使用CLISP和递归

Recursion 使用CLISP和递归,recursion,lisp,common-lisp,Recursion,Lisp,Common Lisp,创建一个随机整数列表或数组(例如,介于[0,50]之间)和一个目标数(例如,60),然后查找列表/数组中整数的所有子集,使每个子集中的数字相加为目标数。打印每个子集的编号,还需要打印编号的原始索引。例如,给定数组A={5,3,4,2,6,7},target=9,数字对为(5,4)、(3,6)、(2,7)和(3,4,2)。它们的指数分别为(0,2)、(1,4)、(3,5)和(1,2,3)。(可选)如果同时使用数组和列表来实现程序,请在Lisp中比较排序数组和排序列表之间的差异。很明显,这里缺少一个

创建一个随机整数列表或数组(例如,介于[0,50]之间)和一个目标数(例如,60),然后查找列表/数组中整数的所有子集,使每个子集中的数字相加为目标数。打印每个子集的编号,还需要打印编号的原始索引。例如,给定数组A={5,3,4,2,6,7},target=9,数字对为(5,4)、(3,6)、(2,7)和(3,4,2)。它们的指数分别为(0,2)、(1,4)、(3,5)和(1,2,3)。(可选)如果同时使用数组和列表来实现程序,请在Lisp中比较排序数组和排序列表之间的差异。

很明显,这里缺少一个明确的问题。我会考虑你想的是什么,以及别人如何能从你的问题和给出的答案中最多参与。 尽管如此,当您思考问题时,您可以从以下内容开始:

(defun random-list (&optional (len 10) (limit 50))
  "Returns a list of length LEN with random integers upto LIMIT."
  (loop :for n :from 1 :upto len
        :collect (1+ (random limit))))
另一种方法是将其实现为递归函数。CL标签的信息部分提供了大量在线资源


如果您在完成任务时遇到困难,我相信您会在这里找到帮助。

这是一项伟大的任务。祝你好运