【发布时间】:2021-03-20 14:16:52
【问题描述】:
我必须编写一个递归 Lisp 函数来打印拼写号而不是最后一个数字。例如(pellnumbers 6) 应该返回一个列表(0 1 2 5 12 29 70)。
这是我的功能
(defun pellRecursive (n)
(cond ((= n 0) 0)
((= n 1) 1)
(t (+ (* 2 (pellRecursive (- n 1)))
(pellRecursive (- n 2))))))
但它只打印最终数字,有人可以帮我吗?它需要是递归的。
【问题讨论】:
-
你说函数应该打印一些东西,但是你说它应该返回一个列表。到目前为止,您的函数什么也没打印(代码中没有类似打印的语句),但它返回一个结果,一个数字。您的讲师可能已经告诉您如何创建列表并将项目添加到列表中?
-
当我这样做时 (print(pellnumbers 6)) 我得到 70 而不是列表,因为我没有执行任何列表操作,我尝试创建一个空列表,然后将空列表添加到使用 cons 的递归调用,但它不起作用
-
这是我第一次使用lisp所以我不是很熟悉
-
这是一本优秀的 Lisp 介绍书:cs.cmu.edu/~dst/LispBook/book.pdf。我通常会建议阅读它,而不是使用 Stackoverflow 来获取为您编写的部分代码。
标签: lisp