【发布时间】:2014-10-08 12:17:09
【问题描述】:
我是一个新的 lisp 程序员,我正在尝试创建我的第一个递归 lisp 函数来返回两个列表中较大的一个。每次我运行该功能时,它似乎都会崩溃,因为我猜我的基本情况没有得到满足。这是我的代码。
(defun longest (l1 l2)
(cond ((null l1) (l2))
((null l2) (l1))
(t (rest l1)
(rest l2)
(longest l1 l2))
)
)
我知道这不适用于两个列表长度相同的情况,但我只是想让一些东西先工作。我知道这也可以通过 while 循环来实现,但出于学习的目的,我想使用递归。
为什么这段代码永远不会终止?
【问题讨论】: