在Lisp中组合列表,仅使用first和cons

时间:2018-02-03 01:23:10

标签: recursion lisp

我正在完成作业,我需要合并两个列表,但我们只允许使用以下功能:

cons(e,L)
first(L)
rest(L)

我一直试图弄清楚如何递归使用这些功能几个小时,但不知道。我们应该使用与此相似的符号:

find(L, k) is
    NULL    if L = NULL
or first(L) if first(L) = k
or find(rest(L), k)

有什么建议吗?谢谢!!

1 个答案:

答案 0 :(得分:1)

如果组合意味着附加两个列表,则尝试遵循伪代码:

append(a,b) =
  if nil(a) then b
  else cons(first(a),append(rest(a),b))