내 코드의 출력에 문제가 있습니다. 내 목록의 null 조건을 확인할 때가되었습니다.Lisp에서 mapcar를 사용하지 않고 목록에 숫자를 곱하면 (0120)
내가 작성하려고하는 질문은 다음과 같습니다. 숫자로 된 두 개의 간단한 목록을 입력으로 사용하는 vecmul
함수를 작성하십시오. vecmul은 벡터를 곱하기 때문에 이러한 목록을 좌표 적으로 곱해야합니다. 두리스트가 같은 길이라고 가정합니다. [예 : (vecmul '(2 3 4 5) '(1 4 5 2))
은 (2*1 3*4 4*5 5*2)
또는 (2 12 20 10)
을 반환합니다. 당신은 지금까지 제가 정확한 숫자를 얻고있다
(defun vecmul (list list2)
(cond ((null list) 0)
(t (cons (* (car list) (car list2))
(vecmul (cdr list) (cdr list2))))))
[170]> (setq l '(2 4 6))
(2 4 6)
[171]> (setq r '(1 3 5))
(1 3 5)
[172]> (vecmul l r)
(2 12 30 . 0)
가이 기능을 위해
을 mapcar
를 사용할 수 없습니다, 그것은 목록에 추가하고 단지이다 "." 목록의 끝에는 "0"이 표시됩니다. 나는 재귀 적 권리를 멈추지 않거나 cond를 올바르게 작동하지 않기 때문에 그것이 확실하다고 확신한다. 나는 그것을 정정하는 방법을 모를 뿐이다.