2011-04-12 39 views
2

需要預先警告:這是一項家庭作業問題。我試圖編寫一個反轉列表的Scheme函數。 '(1 2 3)變成'(3 2 1)等等,我不允許使用這樣做的預定義函數。試圖在計劃中反轉列表

我在正確的軌道上與我在這裏寫的東西?

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

謝謝!

+0

對不起,我忘了提及的輸出。 – Ben 2011-04-12 03:26:46

+0

[Scheme中有什麼相反的功能? \ [問:反向嵌套列表]](http://stackoverflow.com/questions/4092113/what-is-the-reverse-function-in-scheme-q-reverse-nested-list) – 2011-04-12 03:26:56

+0

接受的答案在該線程是可怕的(聞起來像O(N^2)),不在Scheme中,絕對不是慣用的。我會在那裏的正確答案,以避免損壞本的作業。 – wowest 2011-04-12 03:31:21

回答

1

那麼,使用list作爲一個名字會很奇怪,因爲Scheme是一個Lisp-1。改爲撥打lst

想想你可以用foldl,cons,'()lst做什麼。

1

我在正確的軌道上與我寫在這裏?

是的。有些事情要考慮:

  • list是一個內置的函數名,和一個你可能真的想在這個解決方案中使用,所以你可能不應該命名您的正式那個
  • 你忘了周圍的括號car list
  • append需要兩個列表;你傳遞一個列表和一些

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