在Lisp样式语言中,列表通常是这样定义的:
(list 1 2 3)
出于此挑战的目的,所有列表将仅包含正整数或其他列表。我们还将list
在开始时省略关键字,因此列表现在如下所示:
(1 2 3)
我们可以使用来获取列表的第一个元素car
。例如:
(car (1 2 3))
==> 1
我们可以得到原始列表,其中第一个元素被删除cdr
:
(cdr (1 2 3))
==> (2 3)
重要说明:cdr
即使该列表只有一个元素,也将始终返回一个列表:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
列表也可以在其他列表中:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
编写一个程序,该程序返回使用car
并cdr
返回列表中某个整数的代码。在程序返回的代码中,您可以假定列表存储在中l
,目标整数在l
某处,并且所有整数都是唯一的。
例子:
输入: (6 1 3) 3
输出: (car (cdr (cdr l)))
输入: (4 5 (1 2 (7) 9 (10 8 14))) 8
输出: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
输入: (1 12 1992) 1
输出: (car l)
(1 2 3) 16
我们该回来()
吗?
(1 2 3) 16
永远不会出现这样的情况。