(defun split-list (L)
(if (endp L)
'(nil nil)
(let ((x (split-list (cdr L))))
(list (cons (car L) (cadr x))(car X))
)))
这是我拥有的代码,它运行得很好:
(split-list '(1 2 3 4 5 6))
((1 3 5) (2 4 6))
但我需要关于递归部分的解释。
当我们调用函数
(split-list (cdr L))
时,我确信它从123456到23456。 (car L)
是1,(cadr X)
是3,但是5是怎么来的呢?当函数执行
(split-list (cdr L))
时,x
不是变成了3456吗?(cadr x)
应该是4,但这是错的,另一半也是同样的问题。现在 (car x)
应该是3,但也是错误的。请问有人可以解释一下吗?