【发布时间】:2015-05-29 18:57:24
【问题描述】:
我正在尝试编写一个程序,它接收一个数字列表并将列表中的每个元素加 1。同样,如果列表为 0,它将返回 NIL。我尝试以递归方式执行此操作,但它没有显示任何输出。我知道这很简单,但我是一个初学者,我很难递归地思考这个问题。谢谢!
【问题讨论】:
-
当你说“试图写一个程序”时,你真的是指“试图写一个函数”吗?此外,您说您尝试了一些不起作用的方法...如果您需要有关 your 解决方案的帮助,您最好发布您当前的解决方案,否则没有人可能会给您他们的现成的解决方案。
-
“我尝试递归执行,但没有显示输出。”我在你的问题中没有看到这一点。请注意,寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。
-
"这很简单,但我是初学者,递归地思考问题对我来说真的很困难。" 为什么要递归呢?
(defun add-1 (list) (mapcar '1+ list))怎么了?您不需要知道 mapcar 是如何实现的(它可能是递归的,但这是一个实现细节)。但你也可以(loop for x in list collect (1+ x))。这似乎是非递归的(尽管实现可能是递归的),而且它也同样有效。听起来您要么在假设要求,要么您有一些您没有说明的要求。
标签: lisp common-lisp