2016-12-18 60 views
0

下面是这口齿不清递归反向列表的代码:名单反向递归

(defun rev1(list final) 
    (if (eq list()) 
    final 
     (rev1(cdr list) (cons (car list) final)))) 

(defun rev(list) 
    (rev list nil)) 

任何人都可以解释我如何利弊细胞和可变最终作品之间的分配?它是否指向该缺陷单元的头部(汽车)?

回答

1

决赛在开始时是零,你只是每次都将一个列表的第一个元素放在它上面。 例如你有一个列表说'(a b c),并且第一次运行会使最终成为'(a),递归调用将是(rev1'(b c)'(a))。

然后它是这样的: (REV1 '(C)'(BA))

这样下去,并在列表为零,最终的变量是“(CBA),这是你想要的。