【问题标题】:Lisp recursion returns NILLisp 递归返回 NIL
【发布时间】:2012-02-20 00:58:26
【问题描述】:

假设我在别处有一个预定义的函数“sum”。

我想在完成(setq a '(4 3 4))(setq b '(6 10 9)) 之后对两个列表求和

而我是(recurse a b)

但是,我一直将“nil”作为返回值。这个递归我做错了什么?

Trace 目前没有帮助。

(defun recurse (x y)
    (cond
         ( (null x) nil) )
         (t   (sum (car x) (car y) ) (recurse (cdr x) (cdr y)) )

    )
)

【问题讨论】:

  • 你正在添加数字并丢弃结果。

标签: recursion lisp


【解决方案1】:

你需要对结果进行 cons up;否则他们会被扔掉。

(defun recurse (x y)
  (cond
    ((null x) nil)
    (t (cons (sum (car x) (car y))
             (recurse (cdr x) (cdr y))))))

【讨论】:

    猜你喜欢
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2018-01-09
    • 2021-09-20
    • 1970-01-01
    • 2014-11-15
    相关资源
    最近更新 更多