(defun split-list (L)
(if (endp L)
'(nil nil)
(let ((x (split-list (cdr L))))
(list (cons (car L) (cadr x))(car X))
)))
이것은 내가 가지고있는 코드입니다. 그것은 잘 작동합니다 :스플릿리스트 용 Lisp 재귀
(split-list '(1 2 3 4 5 6))
((1 3 5) (2 4 6))
하지만 재귀 부분에 대한 설명이 필요합니다.
우리는 기능 (split-list (cdr L))
를 호출 할 때 나는 그것이 23456. 및 (cadr X)
3입니다에 123,456에서 진행 확신하지만 어떻게 5가 온거야?
기능을 수행했을 때 (split-list (cdr L))
x
이 3456이 아니고 (cadr x)
이 4가되어야합니까? 그것은 다른 반쪽과 틀리며 똑같습니다. (car x)
은 3이어야하며 잘못되었습니다.
누구든지 설명해 주시겠습니까?
당신에게 선생님 감사 아래의 예에서
, 당신은 함수가 실제로 두 개의 값을 반환하는 것을 볼 수 있습니다! 나는 항상 재귀의 하반부에 문제가 생긴다. 요소를 없애고있는 전반은 쉽지만 아래쪽 절반. 조금 혼란스러워. 그래도 위대한 설명. – Ash