List 试图在Scheme中反转列表

List 试图在Scheme中反转列表,list,recursion,scheme,reverse,List,Recursion,Scheme,Reverse,预先警告:这是一个家庭作业问题。我正在尝试编写一个可以反转列表的Scheme函数(1 2 3)变为“(3 2 1)等。我不允许使用执行此操作的预定义函数 我在这里写的对吗 ;myReverse (define (myReverse list) (if (null? list) '() (append (myReverse(cdr list)) car list))) 谢谢 好吧,使用list作为名称会很奇怪,因为Scheme是一个Lisp-1。改称它为lst 考虑一下你

预先警告:这是一个家庭作业问题。我正在尝试编写一个可以反转列表的Scheme函数(1 2 3)变为“(3 2 1)等。我不允许使用执行此操作的预定义函数

我在这里写的对吗

;myReverse
(define (myReverse list)
    (if (null? list) '()
        (append (myReverse(cdr list)) car list)))

谢谢

好吧,使用
list
作为名称会很奇怪,因为Scheme是一个Lisp-1。改称它为lst

考虑一下你可以用
foldl
cons
()
lst
做些什么

我在这里写的对吗

;myReverse
(define (myReverse list)
    (if (null? list) '()
        (append (myReverse(cdr list)) car list)))
对。需要考虑的一些事项:

  • list
    是一个内置函数名,您可能真的想在这个解决方案中使用它,所以您可能不应该这样命名您的函数名
  • 您忘记了
    车辆列表
  • append
    需要两个列表;你正在给它传递一个列表和一个数字

    > (append '(1) 2)
    (1 . 2)
    > (append '(1) '(2))
    (1 2)
    

很抱歉,我忘了提到输出。该线程中接受答案的可能重复非常糟糕(闻起来像O(N^2)),不在Scheme中,而且肯定不惯用。我会把正确答案放在那边的某个地方,以免弄坏本的作业。