2013-01-23 38 views
2

如何返回列表中的第一個n元素?下面是我有:返回列表的前n個

(define returns(lambda (list n) 
(cond ((null? list) '()) 
(((!= (0) n) (- n 1)) (car list) (cons (car list) (returns (cdr list) n))) 
     (else '())))) 

例子:

(returns '(5 4 5 2 1) 2) 
(5 4) 

(returns '(5 4 5 2 1) 3) 
(5 4 5) 
+0

歡迎來到SE!請格式化您的問題更好,更可讀。你想完成什麼?想要定義一個返回列表中前N個元素的過程? – 2013-01-23 21:19:36

+0

請在發佈之前將您的代碼格式化,我這次修復了它,但是真的,如果您希望人們幫助您,那麼您應該更加小心。 –

回答

8

你問爲take過程:

(define returns take) 

(returns '(5 4 5 2 1) 2) 
=> (5 4) 

(returns '(5 4 5 2 1) 3) 
=> (5 4 5) 

這看起來像功課,所以我想你必須實現它從頭開始。一些提示,填入空格:

(define returns 
    (lambda (lst n) 
    (if <???>      ; if n is zero 
     <???>      ; return the empty list 
     (cons <???>    ; otherwise cons the first element of the list 
       (returns <???>  ; advance the recursion over the list 
         <???>))))) ; subtract 1 from n 

不要忘了測試它!

+3

這是一個很好的答案。 – 2013-01-23 21:35:05

+0

R5RS我需要。採取:未定義;不能引用未定義的標識符 – New

+0

@新然後自己實現它,如上所示。我不會這樣做,因爲這看起來像一個家庭作業,這取決於你。 –