预先警告:这是一个家庭作业问题。我正在尝试编写一个反转列表的Scheme函数。 '(1 2 3)变为'(3 2 1)等。我不允许使用执行此操作的预定义函数。
我在这里写的是正确的轨道吗?
;myReverse
(define (myReverse list)
(if (null? list) '()
(append (myReverse(cdr list)) car list)))
谢谢!
答案 0 :(得分:1)
好吧,使用list
作为名称将是奇怪的,因为Scheme是一个Lisp-1。改为称呼lst
。
考虑使用foldl
,cons
,'()
和lst
可以做些什么。
答案 1 :(得分:1)
我在这里写的是正确的轨道吗?
是。有些事情需要考虑:
list
是一个内置的函数名,你可能真的想在这个解决方案中使用它,所以你可能不应该将你的正式命名为car list
append
需要两个列表;你传给它一个列表和一个数字
> (append '(1) 2)
(1 . 2)
> (append '(1) '(2))
(1 2)