리스트의 모든 요소에 x를 추가하려고합니다. 예를 들어 :Common Lisp : x를리스트에 재귀 적으로 붙이십시오.
(queue 3 '(1 2 3))
는
((3 1) (3 2) (3 3))
아래의 코드는 분명히 내가하고 싶은 일을하지 않습니다 줄 것이다. 힌트를주세요.
(defun queue(x y)
(cond
((null y) nil)
(t (cons x (queue x (rest y))))))
리스트의 모든 요소에 x를 추가하려고합니다. 예를 들어 :Common Lisp : x를리스트에 재귀 적으로 붙이십시오.
(queue 3 '(1 2 3))
는
((3 1) (3 2) (3 3))
아래의 코드는 분명히 내가하고 싶은 일을하지 않습니다 줄 것이다. 힌트를주세요.
(defun queue(x y)
(cond
((null y) nil)
(t (cons x (queue x (rest y))))))
y의 첫 번째 요소를 사용하지 않고 나머지 y에 큐를 적용한 결과에 x를 추가합니다. 그래서 기본적으로 y의 모든 값을 버리고 x로 대체합니다.
대신 (cons (list x (first y)) (queue x (rest y))))))
을 원하십니까?
물론지도를 사용하여이 작업을 수행 할 수 있지만이 작업은 재귀의 연습이라고 가정합니다.
완벽! 그리고 그 설명은 꽤 기술적이었습니다. 감사! – qwerty
이미 재귀 버전에 대한 답변을 얻었습니다.
(defun queue (item list)
(mapcar (lambda (list-element)
(list item list-element))
list))
추가 LISP 키워드 : 여기
는 mapcar 등등을 사용하여 일반적인 리스프 방법입니다. – hallski아마도 ((3 1) (3 2) (3 3))을 원할 것입니다. 목록을 나타내는 추가 된 괄호에 유의하십시오. –