List 反向输入方案

List 反向输入方案,list,scheme,lisp,reverse,List,Scheme,Lisp,Reverse,我编写了以下代码来反转方案列表: (define (my-reverse lst) (if (null? lst) '() (append (my-reverse (cdr lst)) (list (car lst))))) 当我为列表(列表1 2 3 4 5)跟踪此函数时,Scheme显示如下: >(my-reverse (mcons 1 (mcons 2 (mcons 3 (mcons 4 (mcons 5 '())))))) > (my-rever

我编写了以下代码来反转方案列表:

(define (my-reverse lst)
  (if (null? lst)
      '()
      (append (my-reverse (cdr lst)) (list (car lst)))))
当我为列表(列表1 2 3 4 5)跟踪此函数时,Scheme显示如下:

>(my-reverse (mcons 1 (mcons 2 (mcons 3 (mcons 4 (mcons 5 '()))))))
> (my-reverse (mcons 2 (mcons 3 (mcons 4 (mcons 5 '())))))
> >(my-reverse (mcons 3 (mcons 4 (mcons 5 '()))))
> > (my-reverse (mcons 4 (mcons 5 '())))
> > >(my-reverse (mcons 5 '()))
> > > (my-reverse '())
< < < '()
< < <(mcons 5 '())
< < (mcons 5 (mcons 4 '()))
< <(mcons 5 (mcons 4 (mcons 3 '())))
< (mcons 5 (mcons 4 (mcons 3 (mcons 2 '()))))
<(mcons 5 (mcons 4 (mcons 3 (mcons 2 (mcons 1 '())))))
>(我的背面(mcons 1(mcons 2)(mcons 3)(mcons 4(mcons 5’(щщщ)))
>(我的背面(麦肯斯2号(麦肯斯3号)(麦肯斯4号)(麦肯斯5’(щщ)))
>>(我的背面(mcons 3(mcons 4)(mcons 5’((()))))
>>(我的反面(mcons 4(mcons 5’()))
>>>(我的反面(麦康斯5’())
>>>(我的反面“())
< < < '()

<正如您在
(我的反面(mcons 5’())
中看到的,它表示“一个元素等于5的列表”的方式是
(mcons 5’())
。当函数返回一个元素的列表时,它再次显示为
(mcons 5'())