【发布时间】:2018-02-19 07:37:28
【问题描述】:
我正在尝试构建一个 lisp 函数,该函数将 car 和 cdr 通过一个列表,同时将该列表中的值与最大值进行比较。如果列表中的某个值大于最大值,则该值将被最大值替换。我想知道为什么我得到 nil 的返回值?我是 lisp 的新手,我来自 Java 背景,所以对我来说完全不同。我不允许使用任何面向对象的东西,我仅限于 car、cdr、append、cons。我想返回列表“elements2”。
(defun enforce-upper-limit(maxVal elements elements2)
(when elements
(cond ((greaterThanMax (car elements) maxVal)(enforce-upper-limit maxVal (cdr lst) (append (maxVal))))
(t (enforce-upper-limit maxVal (cdr elements)(append (car elements)))))
)
)
【问题讨论】:
-
请格式化并缩进您的代码。您的代码几乎无法阅读。如果您提出问题,您还应该提供可重复的示例和错误消息。查看帮助:stackoverflow.com/help/mcve
-
你对
(append (maxVal))有什么期望,elements2的目的是什么? -
请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。
-
善待。他开始了。
标签: recursion functional-programming lisp